c++:复制、删除和运算符=在原始指针映射中
c++: copy, delete and operator = in map of raw pointers
我有一个关于智能指针和原始指针的问题。
我的第一个想法是使用原始指针:所以如果在一个类(例如Routes类(中,它的属性是map<string, list<Route *>> _mapIATA
和map<int, list<Route*>> _mapID
,我将不得不在类中实现一个destroyer、一个copy和一个operator=methods,我错了吗?
然而,如果我不使用原始指针,而是使用智能指针,我就不必担心删除指向的内容,但复制和分配呢?
不过,目前我不确定什么会更好;原始指针或智能指针。
谢谢!
我正在处理大量的数据,这就是我考虑使用原始指针的原因,。。。
这是一个错误的前提。std::list
确实在内部使用动态内存。通过添加另一层间接层,您将一无所获。当你想指向某个东西时,可以使用指针。如果需要对象,请使用对象。
然而,如果我不使用原始指针,而是使用智能指针,我就不必担心删除指向的内容,但复制和分配呢?
无论是否使用指针,您都必须确保正确实现了0/3/5规则。
我不确定什么会更好;原始指针或智能指针。
两者都没有。使用map<string, list<Route>>
,除非您需要在多个所有者之间共享Route
(如果您不知道这意味着什么,则可能不知道(。
附言:如果您担心性能问题,可能值得尝试std::vector
而不是std::list
。
相关文章:
- 从堆栈分配的原始指针构造智能指针
- 将unique_ptr分配给原始指针
- 如何将唯一指针的 std::vector 转换为原始指针的 std::span?
- <Base> <Derived> 具有相同原始指针共享引用的 shared_ptr 和 shared_ptr 实例是否计数?
- C++原始指针和"delete"
- 为什么 C++ 地址中的矢量无法通过原始指针访问
- 如何正确实现具有原始指针的类的复制构造函数?
- 如何在将原始指针移动到基类构造函数之前从unique_ptr中提取原始指针
- 为包含原始指针的对象C++智能指针
- c++:复制、删除和运算符=在原始指针映射中
- C++模板,用于通过常量引用和原始指针传递向量
- C++为什么原始指针不会增加shared_ptr的引用计数?
- 从shared_ptr获取原始指针以将其传递给需要 raw 的函数
- 如何包装多级原始指针以赋予其容器语义
- 为什么我可以通过原始指针而不是shared_ptr来修改对象
- 将原始指针传递给接受unique_ptr作为参数的函数
- 为什么我们不允许将纯引用参数传递给 std::thread,但允许传递原始指针?
- 更改保留指向其字段的原始指针的对象地址
- 从原始指针(衰减的 C 样式数组)和大小生成范围::视图
- 如何在C++代码中灵活使用和替换标准::shared_ptr或标准::unique_ptr或原始指针?