C++通过引用传递整个列表

use*_*632 2 c++ list pass-by-reference

我有以下代码:

void endConditionalFlowsBetweenSets(const list<unsigned int>& sourceSet, const     list<unsigned int>& endSet){
    //TODO: Optimize
    //ending previous flows between the two sets
    list<unsigned int>::iterator itS;
    list<unsigned int>::iterator itE;
    for(itS=sourceSet.begin();itS!=sourceSet.end();itS++)
        for(itE=endSet.begin();itE!=endSet.end();itE++)
            if(*itS!=*itE && linkIndex[*itS][*itE].index==-1)   
                endFlow(*itS,*itE);
}
Run Code Online (Sandbox Code Playgroud)

编译后我得到错误: no known conversion for argument 1 from ‘std::list<unsigned int>::const_iterator {aka std::_List_const_iterator<unsigned int>}’ to ‘const std::_List_iterator<unsigned int>&’

这是为什么?我只是通过引用传递一个列表并创建一个迭代器来迭代它.

tao*_*ocp 5

你应该使用const_iterator:

 list<unsigned int>::const_iterator itS;
 list<unsigned int>::const_iterator itE;
Run Code Online (Sandbox Code Playgroud)