如何使用迭代器作为参数方法?
How to use iterator as parameters method?
我有这种情况:
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);
相关文章:
- 使用在用于SFINAE的void_t中具有参数的方法
- 如何制作一个将函数作为参数的类方法
- c++方法参数只能在linux的发布模式下自行更改
- 使用用户定义的参数调用future/async并调用类方法
- 将成员函数指针作为参数传递给模板方法
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 使用模板参数重载C++方法:如何使其适用于模板的子类?
- 具有字符串化的可变参数宏的现代/通用方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- 如何在方法中传递结构参数
- 如何将类成员方法的参数列表自动填充写入可变参数?
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- C++方法是否可以根据传递给构造函数的参数具有不同的返回类型?
- C++接口继承不同的参数方法
- C++ 模板:重载时找不到基类类型参数方法
- 如何使用迭代器作为参数方法?
- 具有不同亚型的参数方法
- 如何以相同的方法在子类中超载的相同方法来实现工作变量参数方法
- 如何将 C 中声明的可选参数方法转换为 c++
- 如果模板化"ResourceCache"需要不同的创建参数/方法,它们如何加载/创建 T 类型的资源?