C++ Microsoft VisualStudio 2010 c++;找不到向量迭代器.base
我试图在我的代码中使用下一个构造:C++ Microsoft VisualStudio 2010 c++;找不到向量迭代器.base,c++,visual-studio-2010,C++,Visual Studio 2010,我试图在我的代码中使用下一个构造: for (std::vector<Process>::iterator iter = processesExecutuions->begin(); iter != processesExecutuions->end(); ++iter) { if (iter.base()->id == id) { return iter.base(); } } for(std::vector::iterator
for (std::vector<Process>::iterator iter = processesExecutuions->begin(); iter != processesExecutuions->end(); ++iter) {
if (iter.base()->id == id) {
return iter.base();
}
}
for(std::vector::iterator iter=processesExecutuions->begin();iter!=processesExecutuions->end();+iter){
if(iter.base()->id==id){
返回iter.base();
}
}
但VisualStudio在编译期间抛出错误:错误C2039:“基”:不是“std::\u Vector\u iterator”的成员 当我在Ubuntu中使用make with g++时,一切都正常。
你能澄清一下如何在MSV中解决这个问题吗?你似乎依赖于
std::vector::iterator
作为一个具有成员函数base
的类型。您不能对容器迭代器的实际类型做出这样的假设。迭代器可以通过多种方式实现,只要它满足以下条件
在std::vector
的情况下,迭代器是随机访问迭代器,甚至可以在某些平台上实现为普通指针。因此,不要依赖迭代器的实现细节:迭代器是不可移植的
注意:如果您想访问Process::base
而不是std::vector::iterator::base
,那么您需要iter->base()
而不是iter.base()为什么要将base()与迭代器一起使用?这是reverse_iterator而不是iterator的成员。