使用 auto 遍历指针的 const 向量

Iterate through a const vector of pointers with auto

假设我有以下指针的常量向量:

const std::vector<Component*> components;

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

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

与使用有什么区别:

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

与 :

void method(Components* component);

Is it correct to do

这取决于你。

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

元素的引用

对于第二种情况,item 的类型将是 Component*,它(即指针本身)是从 vector.[=20 的元素复制的=]

method的参数类型是Component*,表示通过value/copy传递指针,那么这2种情况没有实际区别。对于指针(作为内置类型),这里 auto item : components 就可以了。