返回迭代器

时间:2008-11-24 12:20:06

标签: c++ stl iterator

我有一个函数,它搜索STL容器,然后在找到位置时返回迭代器,但是我收到一些有趣的错误消息,可以告诉我我做错了什么?

功能:

std::vector< CClass >::iterator CClass::SearchFunction( const std::string& strField )
{
...

   return it;

...
}

错误:

error C2664: 'std::_Vector_iterator<_Ty,_Alloc>::_Vector_iterator(const std::_Vector_iterator<_Ty,_Alloc> &)' : cannot convert parameter 1 from 'std::_Vector_const_iterator<_Ty,_Alloc> *__w64 ' to 'const std::_Vector_iterator<_Ty,_Alloc> &'

3 个答案:

答案 0 :(得分:6)

您的搜索功能正在返回const_iterator。如果您希望调用者能够通过迭代器修改找到的项目,您应该返回相同的类型,即std::vector< CClass >::const_iterator,或者将其转换为std::vector< CClass >::iterator

编辑:看到你的更新后,似乎问题是你的迭代器(它)的类型与函数返回的类型不同。它们应该是一样的。

std::vector< CClass >::iterator it;

答案 1 :(得分:0)

听起来你的const_iterators已经混淆了。请发布更多代码,特别是如何声明迭代器。

答案 2 :(得分:0)

您还应该查看std :: find_if()函数。这可能是一种更清洁的方式。