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>&’
这是为什么?我只是通过引用传递一个列表并创建一个迭代器来迭代它.
你应该使用const_iterator:
list<unsigned int>::const_iterator itS;
list<unsigned int>::const_iterator itE;
Run Code Online (Sandbox Code Playgroud)