【问题标题】:How to use iterator in a function where a vector is passed by reference in C++?如何在 C++ 中通过引用传递向量的函数中使用迭代器?
【发布时间】:2015-04-21 10:15:20
【问题描述】:

例如这里是函数:

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

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

【问题讨论】:

  • 另外,当您报告错误时,将错误包含在您的问题中会很有帮助
  • var iter = begin(list) 应该已经可以工作了

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


【解决方案1】:

你需要const_iterator,因为你正在接受const &amp;

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 2015-05-24
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多