Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 返回迭代器_C++_Stl_Iterator - Fatal编程技术网

C++ 返回迭代器

C++ 返回迭代器,c++,stl,iterator,C++,Stl,Iterator,我有一个函数,它搜索STL容器,然后在找到位置时返回迭代器,但是我收到一些有趣的错误消息,可以告诉我我做错了什么吗 功能: std::vector< CClass >::iterator CClass::SearchFunction( const std::string& strField ) { ... return it; ... } std::vector::迭代器CClass::SearchFunction(const std::string&strFie

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

功能:

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

   return it;

...
}
std::vector::迭代器CClass::SearchFunction(const std::string&strField)
{
...
归还它;
...
}
错误:

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> &'
错误C2664:“std::_Vector_iterator::_Vector_iterator(const std::_Vector_iterator&”):无法将参数1从“std:_Vector_const_iterator*u w64”转换为“const std:_Vector_iterator&”

您的搜索函数正在返回常量迭代器。您应该返回相同的类型,即
std::vector::const_iterator
,或者将其强制转换为
std::vector::iterator
,如果您希望调用方能够通过迭代器修改找到的项

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

std::vector< CClass >::iterator it;
std::vector::迭代器;

听起来好像你把常量迭代器搞混了。请发布更多代码,特别是如何声明迭代器。

您还应该查看std::find_if()函数。这可能是一种更干净的方法