假设我有以下常量指针 vector :
const std::vector<Component*> components;
我想迭代它并只调用该 vector 的一个元素上的方法。这样做是否正确:
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&
,它是绑定(bind)到 vector
元素的引用.
对于第二种情况,item
的类型将为Component*
,它(即指针本身)是从 vector 的元素复制的
.
method
的参数类型是Component*
,意味着通过值/拷贝传递指针,那么两种情况之间没有实际区别。对于指针(作为内置类型),只需 auto item : Components
就可以了。
关于c++ - 使用 auto 迭代指针的 const vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48204486/