我对减少元素时vector::resize()
到底做了什么感到困惑。
我的实验代码如下(没有标题),在c ++ 03下:
struct Bar {
Bar() { cout << "C" << endl; }
Bar(const Bar& other) { cout << "P" << endl; }
~Bar() { cout << "D" << endl; }
};
int main() {
vector<Bar> v(5);
cout << "resize to 2" << endl;
v.resize(2);
cout << "clear" << endl;
return 0;
}
输出:
C
P
P
P
P
P
D
resize to 2
C <- why here is a Construction?
D
D
D
D <- the corresponding Destruction?
clear
D
D
如输出所示,它首先创建一个临时对象并生成5个副本。然后,当我将其调整为2时,会出现一个构造!这是什么建筑?我以为应该只有3个破坏。