如何使用迭代器作为参数方法?

How to use iterator as parameters method?

本文关键字:参数 方法 何使用 迭代器      更新时间:2023-10-16

我有这种情况:

void methodB(list<int>::iterator myIt){
myIt++;
}
void methodA(){
list<int> * myList=new list<int>();
list<int>::iterator it=myList->begin();
//many insertion in myList ...
methodB(it);
//...
}

我希望,当方法B结束时,迭代器向前一个位置,但我不能这样做......如果我在methodA((中并且多次调用methodB(it(,则每次复制迭代器并且当控件返回到methodA((时,it变量始终在myList->begin((中。 如何解决这个问题? 谢谢

一个很好的模型是std::next,它返回迭代器的修改副本:

list<int>::iterator
methodB(list<int>::iterator myIt){
myIt++;
return myIt;
}
void methodA(){
list<int> * myList=new list<int>();
list<int>::iterator it=myList->begin();
//many insertion in myList ...
it = methodB(it);
//...
}

https://en.cppreference.com/w/cpp/iterator/next

请注意,容器迭代器的设计成本低廉。

你需要通过引用传递它,比如:

void methodB(list<int>::iterator& myIt);