Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于传递迭代器到函数的C++问题_C++_Iterator - Fatal编程技术网

关于传递迭代器到函数的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);
}

哈哈。哇!今天在终点站待的时间太长了。我该睡觉了。嘘。如果这回答了你的问题,请点击绿色复选标记。哈哈。哇!今天在终点站待的时间太长了。我该睡觉了。嘘。如果这回答了您的问题,请单击绿色复选标记。