使用 auto 遍历指针的 const 向量
Iterate through a const vector of pointers with auto
假设我有以下指针的常量向量:
const std::vector<Component*> components;
并且我想遍历它并且只对该向量的一个元素调用一个方法。这样做是否正确:
for (const auto& item : components) {
method(item);
}
与使用有什么区别:
for (auto item : components) {
method(item);
}
与 :
void method(Components* component);
Is it correct to do
这取决于你。
对于第一种情况,item
的类型将为 Component* const&
,这是绑定到 vector
.
元素的引用
对于第二种情况,item
的类型将是 Component*
,它(即指针本身)是从 vector
.[=20 的元素复制的=]
method
的参数类型是Component*
,表示通过value/copy传递指针,那么这2种情况没有实际区别。对于指针(作为内置类型),这里 auto item : components
就可以了。
假设我有以下指针的常量向量:
const std::vector<Component*> components;
并且我想遍历它并且只对该向量的一个元素调用一个方法。这样做是否正确:
for (const auto& item : components) {
method(item);
}
与使用有什么区别:
for (auto item : components) {
method(item);
}
与 :
void method(Components* component);
Is it correct to do
这取决于你。
对于第一种情况,item
的类型将为 Component* const&
,这是绑定到 vector
.
对于第二种情况,item
的类型将是 Component*
,它(即指针本身)是从 vector
.[=20 的元素复制的=]
method
的参数类型是Component*
,表示通过value/copy传递指针,那么这2种情况没有实际区别。对于指针(作为内置类型),这里 auto item : components
就可以了。