gpt4 book ai didi

c++ - 对于(自动指针 : vectorOfPointers) vs for(auto pointer : vectorOfPointers)

转载 作者:太空狗 更新时间:2023-10-29 20:39:33 24 4
gpt4 key购买 nike

我想知道...之间有什么真正的区别吗:

for(auto &pointer : vectorOfPointers){pointer->fun();}

for(auto pointer : vectorOfPointers){pointer->fun();}

其中 vectorOfPointers 被声明为普通老式指针的简单 vector:

std::vector<SomeType *> vectorOfPointers;

?

我知道 for(auto &o : objects) 中的 & 代表引用,而 for(auto o : objects) 是循环值。但是我示例中的“值”本身就是指针 - 我可以访问它们指向的对象并使用两个循环修改它们。

那么,有什么区别吗?如果“不是真的”(在用法和编译器从中生成的内容),也许这两个选项之一是一个常见的使用/批准的?

我们不要向该讨论添加智能指针,我对那个确切的情况很感兴趣。

最佳答案

So, is there any difference?

在这个具体的例子中,没有;两个循环做同样的事情,应该产生(或多或少)相同的代码。

更一般地说,非常量引用允许您修改 vector 元素。拷贝不会,但(对于复杂类型)可能效率较低,并且要求类型是可复制的。

maybe one of those 2 options is an commonly used/approved one?

我使用与函数参数相同的经验法则:仅当我想允许修改时才使用非常量引用;否则,通过简单类型的值或复杂或不可复制类型的 const 引用。

关于c++ - 对于(自动指针 : vectorOfPointers) vs for(auto pointer : vectorOfPointers),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27565955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com