使用auto [duplicate]迭代指针的const向量

问题描述 投票:1回答:1

这个问题在这里已有答案:

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

const std::vector<Component*> components;

我想迭代它并且只在这个向量的一个元素上调用一个方法。这样做是否正确:

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

使用有什么区别:

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

用:

void method(Components* component);
c++ c++11 auto ranged-loops
1个回答
1
投票

这样做是否正确

这取决于你。

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

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

method的参数类型是Component*,意味着通过值/副本传递指针,然后两个案例之间没有实际差异。对于指针(作为内置类型),只需auto item : components就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.