繁体   English   中英

C ++中的向量迭代器

[英]Vector iterators in C++

如果我得到一个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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM