Вот что у меня сейчас:
template<template<typename T> class container, typename T>
inline bool contains( const container<T> &cont, const T &element )
{
if( cont.size() == 0 )
return false;
return( std::find(cont.begin(), cont.end(), element) != cont.end() );
}
А я бы хотел назвать это так:
std::vector<string> stringvector;
contains( stringvector, "somestring" );
Я считаю, что это возможно, но все, что я пробовал, выдает другую ошибку. Любая помощь приветствуется. Спасибо!
ОБНОВЛЕНИЕ: Спасибо за все ответы уже, я смотрел слишком далеко, но у меня все еще есть проблемы:
template<class container_type, typename T>
inline bool contains(const container_type& c, const T& e)
{
return !(c.size() && std::find(c.begin(),c.end(),e)!=c.end());
}
int main(int argc, char *argv[])
{
vector<string> stringvector;
stringvector.push_back("hello");
cout << contains( stringvector, string("hello") );
return 0;
}
не компилируется, даже без явного конструктора `string ':
error: no matching function for call to 'find(std::vector<std::basic_string<char> >::const_iterator, std::vector<std::basic_string<char> >::const_iterator, const std::basic_string<char>&)'