gpt4 book ai didi

c++ - C++:我在一种方法中得到一个迭代器,如何在另一种方法中通过迭代器修改原始列表?

转载 作者:行者123 更新时间:2023-12-02 09:48:23 25 4
gpt4 key购买 nike

我有一个列表,我正试图在一种方法中按值查找列表项,而在另一种方法中修改该项。
这是简化的代码:

using namespace std;

//find iterator by value
list<int>::iterator get_iterator(list<int> li,int value) {
list<int>::iterator it;
for(it = li.begin();it != li.end();it++) {
if(*it == value) {
return it;
}
}
return li.end();
}

int main() {
list<int> num_list;
for(int i = 0;i < 20;i++) {
num_list.push_back(i);
}
// print the list
for(list<int>::iterator it = num_list.begin();it != num_list.end();it++) {
cout << *it << endl;
}
list<int>::iterator target_it = get_iterator(num_list,10);
// cout << *target_it <<endl;
*target_it = 100; // try to modify the original list(num_list) by iterator.

// print the list again
for(list<int>::iterator it = num_list.begin();it != num_list.end();it++) {
cout << *it << endl;
}
}
原始列表尚未修改,是否有机会进行修改?
提前致谢

最佳答案

list<int>::iterator get_iterator(list<int> li,int value)通过值获取列表,因此它是原始列表的副本。
返回迭代器后,副本列表将被销毁,因此迭代器无效。使用它会调用未定义的行为。
您想通过引用传递列表

list<int>::iterator get_iterator(list<int> &li,int value)
//^^

关于c++ - C++:我在一种方法中得到一个迭代器,如何在另一种方法中通过迭代器修改原始列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62930862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com