C ++中的矢量迭代器

时间:2014-01-16 19:29:47

标签: c++ stl iterator stdvector

如果我得到一个vector :: end迭代器,然后将一个新元素推回到同一个向量,那么到底的迭代器是什么,会成为最后一个元素的迭代器?

如果这不起作用,是否有一种简单的方法可以将迭代器用于C ++中向量的最后一个元素?

1 个答案:

答案 0 :(得分:6)

这不起作用 - 添加(或删除)std::vector的元素会使所有迭代器无效到该向量中。要获得最后一个元素的迭代器,可以使用减法:

std::vector<T> vec;
vec.push_back(something);  //doing this so that the vector is not empty and the decrement is valid
auto itToLast = vec.end() - 1;

根据您的需要,您可能还会考虑rbegin(),它为最后一个元素提供反向迭代器(递增这样的迭代器将其移动到最后一个 - 但是 - 一,等等。)

最后,减法仅适用于随机访问迭代器(std::vector提供那些,但例如std::list不提供)。对于其他迭代器,您可以使用std::advancestd::prev