Nur*_*yev 5 c++ pointers vector
我们的代码库使用许多向量。其中一些向量彼此共享对象,即它们包含std::shared_ptr共享对象。问题是:代码库仍处于活跃的开发阶段,通常需要将一些包含值的向量重写为包含共享指针的向量。这很乏味。所以我想出了一个想法:简单地将所有向量作为共享指针的向量。
问题是:可以吗?我应该注意哪些注意事项?会出现什么问题?
我做了一些简单且可能幼稚的测量,在初始化和查询值向量和共享指针向量时,它们之间的性能实际上没有区别。
如果性能不是问题,还有什么我应该注意的吗?
我认为这是一个坏主意,JAVA 就是这样做的,当您失去对共享对象的跟踪并且您在巨大的代码库中的某个地方进行了一些临时更改“破坏”了它时,这通常会导致问题。
如果将其与内部对象一起使用,几乎不会出现性能问题std::vector,除非所包含的对象非常大或具有复杂的构造函数。
仅当严格需要时才应在向量中使用指针(共享或非共享),例如:
std::mutex)