在我的情况下,我有一个
核心问题是:地图是否在某个时候复制大型向量,如果是,它的成本是否与
如果两者的答案都是肯定的,我的选择是什么?我的第一个解决方案将是使用
我使用C ++ 03。如果答案取决于标准,我将感激任何关于它的评论。
std :: map<std :: string,std :: vector<cCustomClass>>
,但同样的问题也适用于std :: set
。这些向量可能会变得非常大(超过100000个元素),所以如果我向地图添加更多元素,我会担心向量是否被重新分配或复制。核心问题是:地图是否在某个时候复制大型向量,如果是,它的成本是否与
std :: vector :: capacity()
成比例?如果两者的答案都是肯定的,我的选择是什么?我的第一个解决方案将是使用
std :: map<std :: string,std :: vector<cCustomClass> * >
和(智能指针),但我想知道是否必要。我使用C ++ 03。如果答案取决于标准,我将感激任何关于它的评论。
map
不会随意复制元素。您能展示一些执行不必要的复制的代码吗? - Baum mit Augen