Lau*_*era 0 c++ dictionary pointers copy smart-pointers
我有一个与智能指针和原始指针有关的问题。
我的第一个想法是使用原始指针:因此,如果在一个类(例如Routes类)中,其属性是map<string, list<Route *>> _mapIATA和map<int, list<Route*>> _mapID,那么我将必须在该类中实现一个destroyer,一个副本和一个operator =方法,我错了吗?
但是,如果我不是使用原始指针,而是使用智能指针,则不必担心删除指向的内容,但是复制和分配呢?
但目前,我不确定会更好。原始或智能指针。
谢谢!
我正在处理大量数据,这就是为什么我考虑使用原始指针的原因,...
这是错误的前提。一个std::list没有在内部使用动态内存。通过添加另一层间接,您将一无所获。当您要指向某物时,请使用指针。如果要使用对象,请使用对象。
但是,如果我不是使用原始指针,而是使用智能指针,则不必担心删除指向的内容,但是复制和分配呢?
无论是否使用指针,都必须确保正确实现了0/3/5规则。
我不确定会更好。原始或智能指针。
都不行 map<string, list<Route>>除非您需要Route在多个所有者之间共享,否则请使用a (如果您不知道那是什么意思,那么可能不行)。
PS:如果你担心性能它可能是值得尝试std::vector的,而不是std::list。