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的成员。