减少矢量大小时为什么会有结构?

时间:2016-04-24 05:35:13

标签: c++ stl containers stdvector

我对减少元素时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个破坏。

0 个答案:

没有答案