diff options
author | Shauren <shauren.trinity@gmail.com> | 2014-06-01 19:20:49 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2014-06-01 19:20:49 +0200 |
commit | 9fcd607e78aca169bb23ac940eefed7879ea8c3c (patch) | |
tree | 144c3b525b15c8dd092583f2c5e8ac625d4a70e3 /src/server/shared/Containers.h | |
parent | 282a7cad7df912db8fcab57f18840e8245b5c2af (diff) |
Core/Misc: Added utility method for checking is two sorted containers have a common element
Diffstat (limited to 'src/server/shared/Containers.h')
-rw-r--r-- | src/server/shared/Containers.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/server/shared/Containers.h b/src/server/shared/Containers.h index d6ba98e4ed4..9121fbe2a97 100644 --- a/src/server/shared/Containers.h +++ b/src/server/shared/Containers.h @@ -64,6 +64,34 @@ namespace Trinity std::advance(it, urand(0, container.size() - 1)); return *it; } + + /** + * @fn bool Trinity::Containers::Intersects(Iterator first1, Iterator last1, Iterator first2, Iterator last2) + * + * @brief Checks if two SORTED containers have a common element + * + * @param first1 Iterator pointing to start of the first container + * @param last1 Iterator pointing to end of the first container + * @param first2 Iterator pointing to start of the second container + * @param last2 Iterator pointing to end of the second container + * + * @return true if containers have a common element, false otherwise. + */ + template<class Iterator1, class Iterator2> + bool Intersects(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2) + { + while (first1 != last1 && first2 != last2) + { + if (*first1 < *first2) + ++first1; + else if (*first2 < *first1) + ++first2; + else + return true; + } + + return false; + } } //! namespace Containers } |