使用 auto 遍历指针的常量向量

Iterate through a const vector of pointers with auto

本文关键字:常量 向量 指针 auto 遍历 使用      更新时间:2023-10-16

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

const std::vector<Component*> components;

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

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

与使用有什么区别:

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

跟:

void method(Components* component);

这样做是否正确

这取决于你。

对于第一种情况,item的类型将Component* const&,它是绑定到vector元素的引用。

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

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