如果没有将默认类构造函数传递给std :: vector allocator,则调用一次Allocator

时间:2017-03-23 20:05:17

标签: c++ vector

基本上我有以下课程代码:

class Foo {

public:
    Foo() { instructions };
    Foo(int a) { instructions };
    Foo(int a, int b) { instructions };

}

这个用作std :: vector对象的基本类型但是,如果我使用默认的Foo分配器分配并初始化一个新的向量,则向量将填充x个不同的Foo对象。那么,以下一行:

std::vector<Foo> bar = std::vector<Foo>(1337);

生成1337个不同的Foo对象。

当我使用第二个或第三个构造函数时会发生奇怪的行为。的确,在这种情况下:

std::vector<Foo> bar = std::vector<Foo>(1337, Foo(1, 2));

bar填充了相同的元素。最后,bar只是一个包含1337个相同对象的向量。

我错过了什么吗?

0 个答案:

没有答案