C++中的矢量迭代器

Vector iterators in C++

本文关键字:迭代器 C++      更新时间:2023-10-16

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

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

这是行不通的 - 添加(或删除)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