c++:复制、删除和运算符=在原始指针映射中

c++: copy, delete and operator = in map of raw pointers

本文关键字:原始 指针 映射 运算符 复制 删除 c++      更新时间:2023-10-16

我有一个关于智能指针和原始指针的问题。

我的第一个想法是使用原始指针:所以如果在一个类(例如Routes类(中,它的属性是map<string, list<Route *>> _mapIATAmap<int, list<Route*>> _mapID,我将不得不在类中实现一个destroyer、一个copy和一个operator=methods,我错了吗?

然而,如果我不使用原始指针,而是使用智能指针,我就不必担心删除指向的内容,但复制和分配呢?

不过,目前我不确定什么会更好;原始指针或智能指针。

谢谢!

我正在处理大量的数据,这就是我考虑使用原始指针的原因,。。。

这是一个错误的前提。std::list确实在内部使用动态内存。通过添加另一层间接层,您将一无所获。当你想指向某个东西时,可以使用指针。如果需要对象,请使用对象。

然而,如果我不使用原始指针,而是使用智能指针,我就不必担心删除指向的内容,但复制和分配呢?

无论是否使用指针,您都必须确保正确实现了0/3/5规则。

我不确定什么会更好;原始指针或智能指针。

两者都没有。使用map<string, list<Route>>,除非您需要在多个所有者之间共享Route(如果您不知道这意味着什么,则可能不知道(。

附言:如果您担心性能问题,可能值得尝试std::vector而不是std::list