我必须创建一个适用于矢量,链表和双链表的通用函数。 我想使用迭代器来解析以查找val是否在向量,链表或双链表中。 我只是不知道如何声明泛型迭代器。以下是我对宣言的尝试。
template <class Container, class T>
void findValue(Container &x, const T &val){
std::x<T>::iterator it;
}
答案 0 :(得分:0)
由于C ++容器定义了嵌套类型iterator
,您可以使用typename Container::iterator
在findValue
函数中声明迭代器(尽管auto
也可以正常工作)。也不需要将T
作为单独的模板参数,因为您可以使用typename Container::value_type
。
template<typename Container>
void findValue(Container& x, const typename Container::value_type & val)
{
// could use 'typename Container::iterator' instead of 'auto'
for (auto it = begin(x); it != end(x); ++it)
{
if (*it == val)
{
std::cout << "found " << val << std::endl;
break;
}
}
}