Простой алгоритм:
template <typename Container>
bool contains(Container const& c, typename Container::const_reference v) {
return std::find(c.begin(), c.end(), v) != c.end();
}
Вы можете настроить его для более эффективного поиска в некоторых известных контейнерах:
template <typename Key, typename Cmp, typename Alloc>
bool contains(std::set<Key,Cmp,Alloc> const& s, Key const& k) {
return s.find(k) != s.end();
}
template <typename Key, typename Value, typename Cmp, typename Alloc>
bool contains(std::map<Key,Value,Cmp,Alloc> const& m, Key const& k) {
return m.find(k) != m.end();
}
И, таким образом, вы получаете единый алгоритм, который выполняет поиск по любому типу контейнера и специально предназначен для ускорения в тех контейнерах, которые заказаны.