C ++:在原始指针的映射中复制,删除和运算符=

Lau*_*era 0 c++ dictionary pointers copy smart-pointers

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

我的第一个想法是使用原始指针:因此,如果在一个类(例如Routes类)中,其属性是map<string, list<Route *>> _mapIATAmap<int, list<Route*>> _mapID,那么我将必须在该类中实现一个destroyer,一个副本和一个operator =方法,我错了吗?

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

但目前,我不确定会更好。原始或智能指针。

谢谢!

for*_*818 5

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

这是错误的前提。一个std::list没有在内部使用动态内存。通过添加另一层间接,您将一无所获。当您要指向某物时,请使用指针。如果要使用对象,请使用对象。

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

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

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

都不行 map<string, list<Route>>除非您需要Route在多个所有者之间共享,否则请使用a (如果您不知道那是什么意思,那么可能不行)。

PS:如果你担心性能它可能是值得尝试std::vector的,而不是std::list