对象向量 - 如何将参数发送到构造函数?

时间:2018-04-13 23:40:39

标签: c++ vector parameters constructor

我们说我有以下代码:

struct obj{
    int v;
    obj(int i = 1){
        v = i;
    }
};

int main(){
    vector<obj> v1(10);    // (1)
    vector<obj> v2(15);    // (2)
}

以上:

数字(1)会创建一个包含10个 obj 实例的向量,默认为 v=1
编号(2)如何将 15 作为参数发送到 obj ,以便 v=15 ???

我在网上搜索了一下,在这个网站上发现了这个 article ,但它似乎是更高级的东西,作为一个新手,我没有得到它。

2 个答案:

答案 0 :(得分:3)

vector<obj> v1(10);     // creates a vector of 10 obj, each initialized 
                        // with the default value 1

vector<obj> v2(10, 15); // creates a vector of 10 obj, each initialized 
                        // with the value 15

如果要将多个参数传递给构造函数:

vector<obj> v3(10, obj(15, x, y)); // creates a vector of 10 obj, each 
                                   // initialized with (15, x, y)

当然,您必须提供一个构造函数,该构造函数需要三个参数才能工作。

答案 1 :(得分:2)

你可以这样做:

vector<obj> v3 (10,15);

10是物体数量 15是构造函数的参数。

对于多个参数,您可以将多个值作为列表发送,如下所示:

vector<obj> v3 (10, {15,25} );

<强> {15,25} 即可。这称为初始化列表。

另一种选择是:

vector<obj> v3(10, obj(15,25));

请参阅 Baum 的说明。这是一个很好的参考。