diff options
| author | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:08:27 +0200 |
|---|---|---|
| committer | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:08:27 +0200 |
| commit | c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c (patch) | |
| tree | 3e4f42f93c7ae89a364e4d51fff6e5cec4e55fa9 /graphs/cpp/exist_functor | |
add: graphs et rushs
Diffstat (limited to 'graphs/cpp/exist_functor')
| -rw-r--r-- | graphs/cpp/exist_functor/example.cc | 24 | ||||
| -rw-r--r-- | graphs/cpp/exist_functor/exist.hh | 14 | ||||
| -rw-r--r-- | graphs/cpp/exist_functor/exist.hxx | 15 |
3 files changed, 53 insertions, 0 deletions
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 <iostream> + +#include "exist.hh" + +int main() +{ + Exist<int> exist_int; + Exist<std::string> 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 <vector> + +template <class T> +class Exist +{ +public: + bool operator()(T x); + +private: + std::vector<T> 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 <algorithm> + +#include "exist.hh" + +template <class T> +bool Exist<T>::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 |
