如何在C ++中通过引用传递向量的函数中使用迭代器?

时间:2015-04-21 10:15:20

标签: c++ iterator pass-by-reference

例如,这里是函数:

void process(const vector<MyItem> & list){
    vector<MyItem>::iterator iter;
    ...
}

然而它不会编译。 我怎样才能解决这个问题? 非常感谢!

2 个答案:

答案 0 :(得分:1)

您需要const_iterator时需要const &

void process(const vector<MyItem> & list){
    vector<MyItem>::const_iterator iter;
    ...
}

答案 1 :(得分:0)

您还可以使用auto和一个从该向量获取迭代器的函数(或<algorithm>中的函数,返回一个函数,例如std::find):

void process(const vector<MyItem> & list){
    auto begin = list.begin();
    auto end = list.end()
    ...
}

这将确保您始终获得正确的类型,无论参数类型如何(此处,const实际上意味着您需要const_iterator)。