假设我有以下常量向量指针:
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
就可以了。