C++11特性:列表初始化:VS2010中vector<string>的初始化方式

朴灿烈づ我的快乐病毒、 2023-10-17 09:35 119阅读 0赞

在使用VS2010学习C++Primer第五版时,学习到了初始化的问题,算是一个小难点吧。

C++11的新特性支持列表初始化:将初始值放在花括号(注意不是圆括号)内进行列表初始化,而VS2012版本及以上才完全支持C++11的新特性,所以会出现这个小问题。

(PS初始化与赋值不同,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦去,用一个新值代替

  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5. void main()
  6. {
  7. vector<string> text{"ksaocdICsni"};//列表初始化
  8. for (auto it = text.begin(); it != text.end() && it ->empty();it++)
  9. {
  10. cout<<*it<<endl;
  11. }
  12. }

如果如上 直接在VS2010中使用列表初始化,那么程序还出现以下错误:

Center

编译器是不会理解你的关于列表初始化的问题的。

那么怎样在VS2010中初始化vector 呢?

如下三个方法:

1:类似于数组的分别定义

  1. vector<string> strArray(10);
  2. strArray[0] = "hello";
  3. strArray[1] = "world";
  4. strArray[2] = "this";
  5. strArray[3] = "find";
  6. strArray[4] = "gank";
  7. strArray[5] = "pink";
  8. strArray[6 ]= "that";
  9. strArray[7] = "when";
  10. strArray[8] = "how";
  11. strArray[9] = "cpp";

2:使用push_back()函数,进行扩展初始化

  1. vector<string> strArray;
  2. strArray.push_back("hello");
  3. strArray.push_back("world");
  4. strArray.push_back("this");
  5. strArray.push_back("find");
  6. strArray.push_back("gank");
  7. strArray.push_back("pink");
  8. strArray.push_back("that");
  9. strArray.push_back("when");
  10. strArray.push_back("how");
  11. strArray.push_back("cpp");

3:使用构造函数的方式

  1. string str[]={"hello","world","this","find","gank","pink","that","when","how","cpp"};
  2. vector<string> strArray(str, str+10);

发表评论

表情:
评论列表 (有 0 条评论,119人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++—初始化列表

    初始化列表 对类的初始化有2种方法,一种是在构造函数中一次定义,另外一种就是初始化列表。 2种方法总的来说还是,初始化列表较为高

    相关 C++ 初始化列表

    与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。 class CExample