2

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

const std::vector<Component*> components;

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

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

与使用有什么区别:

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

和 :

void method(Components* component);
4

1 回答 1

2

这样做是否正确

这取决于你。

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

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

的参数类型methodComponent*,意味着通过值/副本传递指针,那么这两种情况之间没有实际区别。而对于指针(作为内置类型),auto item : components这里就可以了。

于 2018-01-11T10:16:10.337 回答