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

Has*_*een 3 c++ parameters constructor vector

假设我有以下代码:

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

int main(){
    vector<obj> v1(10);    // (1)
    vector<obj> v2(15);    // (2)
}
Run Code Online (Sandbox Code Playgroud)

按上述:

Number (1) 创建一个具有 10 个实例的向量,obj默认为v=1
数(2)如何将15作为参数发送给objso v=15???

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

Sid*_*d S 5

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
Run Code Online (Sandbox Code Playgroud)

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

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

当然,您必须提供一个带有三个参数的构造函数才能正常工作。

  • 请注意,“vector&lt;obj&gt; v2(10, 15);”与“vector&lt;obj&gt; v2(10, obj(15));”相同。此“vector”构造函数的第二个参数是“const T&amp;”值`,其中每个元素都以 `value` 作为输入进行复制构造。单独传递“15”会创建一个隐式临时“obj”来传递给“value” (3认同)