C++: vector初始化

vector初始化方法

特殊情况

在大多数情况下,上述几种不同的初始化方式可以互换,不过也并非一直如此。有三种例外情况

  1. 使用拷贝初始化(=)时,只能提供一个初始值;
  2. 如果提供一个类内初始值,只能使用拷贝初始化(=)或使用花括号({…})形式的初始化,不能使用圆括号形式的初始化;
  3. 如果提供的是初始元素值的列表,只能把初始值都放在花括号里进行列表初始化,而不能放在圆括号里。

vector<string>的特殊情况

在Visual Studio 2015中测试的时候发现,对于vector<string>形式,下面两种形式等价

vector<string> vs{10, "Hello World!"};

vector<string> vs(10, "Hello World!");

实际上,经过进一步测试,发现,当不是vector<int>时,使用花括号初始化和使用圆括号初始化n个重复执行的对象是一样的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1 + 16 =

6 + = 10