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

vector of objects - how to send a parameter to the constructor?

本文关键字:参数 构造函数 向量 对象      更新时间:2023-10-16

假设我有以下代码:

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

根据以上:

数字 (1( 创建一个具有 10 个默认 v=1 obj 实例的向量。
数字 (2( 如何将 15 作为参数发送到obj以便v=15???

我在网上搜索并在这个网站上找到了这篇文章,但它似乎是更高级的东西,作为一个新手我没有得到它。

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)

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

你可以这样做:

vector<obj> v3 (10,15);

10 是对象数。
15 是构造函数的参数。

对于多个参数,您可以按列表形式发送多个值,如下所示:

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

{15,25} .这称为初始值设定项列表。

另一种选择是:

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

参见鲍姆的笔记。这是一个很好的参考。