C++11特性:列表初始化:VS2010中vector<string>的初始化方式
在使用VS2010学习C++Primer第五版时,学习到了初始化的问题,算是一个小难点吧。
C++11的新特性支持列表初始化:将初始值放在花括号(注意不是圆括号)内进行列表初始化,而VS2012版本及以上才完全支持C++11的新特性,所以会出现这个小问题。
(PS:初始化与赋值不同,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦去,用一个新值代替。)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void main()
{
vector<string> text{"ksaocdICsni"};//列表初始化
for (auto it = text.begin(); it != text.end() && it ->empty();it++)
{
cout<<*it<<endl;
}
}
如果如上 直接在VS2010中使用列表初始化,那么程序还出现以下错误:
编译器是不会理解你的关于列表初始化的问题的。
那么怎样在VS2010中初始化vector
如下三个方法:
1:类似于数组的分别定义
vector<string> strArray(10);
strArray[0] = "hello";
strArray[1] = "world";
strArray[2] = "this";
strArray[3] = "find";
strArray[4] = "gank";
strArray[5] = "pink";
strArray[6 ]= "that";
strArray[7] = "when";
strArray[8] = "how";
strArray[9] = "cpp";
2:使用push_back()函数,进行扩展初始化
vector<string> strArray;
strArray.push_back("hello");
strArray.push_back("world");
strArray.push_back("this");
strArray.push_back("find");
strArray.push_back("gank");
strArray.push_back("pink");
strArray.push_back("that");
strArray.push_back("when");
strArray.push_back("how");
strArray.push_back("cpp");
3:使用构造函数的方式
string str[]={"hello","world","this","find","gank","pink","that","when","how","cpp"};
vector<string> strArray(str, str+10);
还没有评论,来说两句吧...