【发布时间】:2012-11-03 23:05:26
【问题描述】:
vector<X> v;
X x;
v.push_back(x); v.push_back(x); v.push_back(x);
为什么这段代码调用类X的复制构造函数6次? (使用 g++ 4.7.2 STL)
拜托,我想准确地了解这个特殊的 STL 的底层会发生什么。
【问题讨论】:
-
可能是因为一些重定位(向量的所有元素必须在一个连续的内存块中)
-
@KirilKirov 是的,这绝对是正确的,但我想确切地知道引擎盖下发生了什么。
-
它是实现定义的。据我所知,该标准对此没有任何说明。
-
尝试调用
v.reserve(3),应该会减少复制构造函数的调用次数。