代码之家  ›  专栏  ›  技术社区  ›  klaus

使用auto[复制]遍历指针的常量向量

  •  2
  • klaus  · 技术社区  · 8 年前

    假设指针的常量向量如下:

    const std::vector<Component*> components;
    

    我想遍历它,并且只对这个向量的一个元素调用一个方法。这样做是否正确:

    for (const auto& item : components) {
      method(item);
    }
    

    使用以下各项有何区别:

    for (auto item : components) {
      method(item);
    }
    

    使用:

    void method(Components* component);
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   user513951    7 年前

    这样做正确吗

    这取决于你。

    对于第一种情况,类型 item 将 Component* const& ,它是绑定到 vector .

    对于第二种情况 项目 将 Component* ,它(即指针本身)是从 矢量 .

    的参数类型 method 是 组件* ,表示通过值/副本传递指针,则这两种情况之间没有实际差异。对于指针(内置类型),只需 auto item : components 这里很好。