From b94fe63873952da45fcea20954e95240c12ab16d Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <github@naumov.de> Date: Sun, 9 Dec 2018 10:59:07 +0100 Subject: [PATCH] [BL] Add findIndex(container, element) algorithm. --- BaseLib/Algorithm.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/BaseLib/Algorithm.h b/BaseLib/Algorithm.h index 8b93068185d..9324b309bb5 100644 --- a/BaseLib/Algorithm.h +++ b/BaseLib/Algorithm.h @@ -225,4 +225,21 @@ bool contains(Container const& container, container.end(); } + +/// Returns the index of first element in container or, if the element is not +/// found a std::size_t maximum value. +/// +/// The maximum value of std::size_t is chosen, because such an index cannot +/// exist in a container; the maximum index is std::size_t::max-1. +template <typename Container> +std::size_t findIndex(Container const& container, + typename Container::value_type const& element) +{ + auto const it = std::find(container.begin(), container.end(), element); + if (it == container.end()) + { + return std::numeric_limits<std::size_t>::max(); + } + return std::distance(container.begin(), it); +} } // namespace BaseLib -- GitLab