![](/img/trans.png)
[英]How to access the position of an object within a vector when using an iterator?
[英]Initializing an iterator to a position within a vector
我正在尝试将vector<string>::iterator it
初始化为我的vector中的位置x
。 似乎由于it=vector.begin();
我只能将迭代器定位到向量的第一个元素it=vector.begin();
。
如果我希望迭代器从位置x开始工作怎么办? 我该如何移动? 我不希望迭代器遍历整个向量,因为我已经知道可以从位置x开始寻找所需的内容。
我尝试将迭代器初始化为it=vector.begin()
,然后使用advance(it,x);
将其移至x advance(it,x);
但它不起作用。 如果我尝试打印*it
不会返回任何值。
我该如何解决?
std::vector
支持随机访问迭代器,这意味着您可以直接向迭代器添加指定的数量,例如
auto it = vector.begin() + 4;
无论如何, std::advance
应该绝对可以工作:
auto it = vector.begin();
std::advance(it, 4);
如果您不想修改现有的迭代器,还可以使用std::next
:
auto it = std::next(vector.begin(), 4);
如果您知道确切的位置,则可以使用it + x
。 其他方法是在问题中编写代码时使用advance()
。 以下工作 :
std::vector<int> a{10,20,30,40};
auto it1 = a.begin() + 2;
auto it2 = a.begin();
advance(it2, 2);
cout << *it1 << " " << *it2;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.