繁体   English   中英

将迭代器初始化为向量中的位置

[英]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.

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