找不到Microsoft VisualStudio 2010 c ++ vector iterator.base

时间:2014-02-08 08:12:52

标签: c++ visual-studio-2010

我正在尝试在我的代码中使用下一个constuctioon:

for (std::vector<Process>::iterator iter = processesExecutuions->begin(); iter != processesExecutuions->end(); ++iter) {
    if (iter.base()->id == id) {
        return iter.base();
    }
}

但VisualStudio在编译时抛出错误:
错误C2039:'base':不是'std :: _ Vector_iterator&lt; _Myvec&gt;'

的成员

当我在Ubuntu中使用make with g ++时,一切正常 你能澄清一下如何在msvs中解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您似乎依赖std::vector::<T>iterator作为具有成员函数base的类型。您不能对容器迭代器的实际类型做出这样的假设。迭代器可以通过多种方式实现,只要它满足certain requirements即可。

std::vector的情况下,迭代器是随机访问迭代器,甚至可以在某些平台上实现为普通指针。所以不要依赖迭代器的实现细节:这些都不是可移植的。

注意:如果您想访问Process::base而不是std::vector<T>::iterator::base,则需要iter->base()而不是iter.base()