这个问题在这里已有答案:
假设我有以下const指针向量:
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
就可以了。