c – 何时使用向量中的对象以及何时使用指向向量中对象的指针?
作者:互联网
实例化对象并将其存储在向量中时.
这三者之间的利弊是什么?在哪种情况下应该使用这些利弊?
宾语:
std::vector<obj> collection;
collection.push_back(obj{});
指向对象的指针:
std::vector<obj*> collection;
collection.push_back(new obj{});
智能指针:
std::vector<std::unique_ptr<obj>> collection;
collection.push_back(std::unique_ptr<obj>(new obj{}));
解决方法:
如果对象类型支持复制和赋值,则应该
避开指针,并将对象放在向量中(和
在其他地方 – 你可能不应该有任何指针
对这样的对象).
如果对象类型具有标识,并且不支持复制和
赋值(或仅支持拷贝才能实现
一个克隆函数),然后你需要保持指针
向量.智能指针或原始指针取决于什么
正在使用该向量,以及与之相关的政策
对象的生命周期.根据我的经验,大多数时候,
矢量用于导航,在这种情况下,你应该使用
原始指针.
标签:raii,c,pointers,vector 来源: https://codeday.me/bug/20190830/1768462.html