关于传递迭代器到函数的C++问题
因此,给定此函数定义:关于传递迭代器到函数的C++问题,c++,iterator,C++,Iterator,因此,给定此函数定义: void xx(list<int> my_list, list<int>::iterator start){ list<int>::iterator _start = start; distance(my_list.begin(),_start); } 我以为会是零。是的,我知道我很烂。我的列表被声明为passby value,它是参数的副本。这意味着,给定距离我的列表。开始,\u开始;,my_list.b
void xx(list<int> my_list, list<int>::iterator start){
list<int>::iterator _start = start;
distance(my_list.begin(),_start);
}
我以为会是零。是的,我知道我很烂。我的列表被声明为passby value,它是参数的副本。这意味着,给定距离我的列表。开始,\u开始;,my_list.begin和_start指向两个不同的std::list,行为未定义
如果将其更改为通过引用传递,那么两个迭代器都指向相同的std::list,代码就可以了。e、 g
void xx(list<int>& my_list, list<int>::iterator start){
list<int>::iterator _start = start;
distance(my_list.begin(),_start);
}
我的_列表声明为passby value,它是参数的副本。这意味着,给定距离我的列表。开始,\u开始;,my_list.begin和_start指向两个不同的std::list,行为未定义
如果将其更改为通过引用传递,那么两个迭代器都指向相同的std::list,代码就可以了。e、 g
void xx(list<int>& my_list, list<int>::iterator start){
list<int>::iterator _start = start;
distance(my_list.begin(),_start);
}
哈哈。哇!今天在终点站待的时间太长了。我该睡觉了。嘘。如果这回答了你的问题,请点击绿色复选标记。哈哈。哇!今天在终点站待的时间太长了。我该睡觉了。嘘。如果这回答了您的问题,请单击绿色复选标记。