From c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:08:27 +0200 Subject: add: graphs et rushs --- graphs/cpp/exist_functor/example.cc | 24 ++++++++++++++++++++++++ graphs/cpp/exist_functor/exist.hh | 14 ++++++++++++++ graphs/cpp/exist_functor/exist.hxx | 15 +++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 graphs/cpp/exist_functor/example.cc create mode 100644 graphs/cpp/exist_functor/exist.hh create mode 100644 graphs/cpp/exist_functor/exist.hxx (limited to 'graphs/cpp/exist_functor') diff --git a/graphs/cpp/exist_functor/example.cc b/graphs/cpp/exist_functor/example.cc new file mode 100644 index 0000000..d580f7b --- /dev/null +++ b/graphs/cpp/exist_functor/example.cc @@ -0,0 +1,24 @@ +#include + +#include "exist.hh" + +int main() +{ + Exist exist_int; + Exist exist_str; + + // Test with integers + std::cout << std::boolalpha; + std::cout << exist_int(1) << std::endl; // Prints false + std::cout << exist_int(2) << std::endl; // Prints false + std::cout << exist_int(1) << std::endl; // Prints true + std::cout << exist_int(3) << std::endl; // Prints false + + // Test with strings + std::cout << exist_str(std::string("Hello")) << std::endl; // Prints false + std::cout << exist_str(std::string("World")) << std::endl; // Prints false + std::cout << exist_str(std::string("Hello")) << std::endl; // Prints true + std::cout << exist_str(std::string("C++")) << std::endl; // Prints false + + return 0; +} diff --git a/graphs/cpp/exist_functor/exist.hh b/graphs/cpp/exist_functor/exist.hh new file mode 100644 index 0000000..49cafd6 --- /dev/null +++ b/graphs/cpp/exist_functor/exist.hh @@ -0,0 +1,14 @@ +#pragma once +#include + +template +class Exist +{ +public: + bool operator()(T x); + +private: + std::vector seen_; +}; + +#include "exist.hxx" diff --git a/graphs/cpp/exist_functor/exist.hxx b/graphs/cpp/exist_functor/exist.hxx new file mode 100644 index 0000000..638c4e3 --- /dev/null +++ b/graphs/cpp/exist_functor/exist.hxx @@ -0,0 +1,15 @@ +#pragma once +#include + +#include "exist.hh" + +template +bool Exist::operator()(T x) +{ + if (std::find(seen_.begin(), seen_.end(), x) == seen_.end()) + { + seen_.push_back(x); + return false; + } + return true; +} \ No newline at end of file -- cgit v1.2.3