我有一个关于智能指针和原始指针的问题。
我的第一个想法是使用原始指针:所以如果在一个类(例如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
。