C++语言中关于vector的初始化问题

这是我的代码:#include<iostream>#include<string>#include<cctype>#include<vector>//#pragmawar... 这是我的代码:
#include<iostream>
#include<string>
#include<cctype>
#include<vector>
//#pragma warning(disable:4996)
using namespace std;

void main()
{
vector<string> ivec={"a","an"};

}

为什么用visual studio 2012提示不能如此初始化。

当我写:vector<int> ivec{10,11,12};
这样也是不能初始化的

但是:vector<int> ivec(10,-1);
就可以,里面有十个元素,每个都为-1;

我是按照C++primer那本书里面的例子打的,为什么也会出错呢?是编译器的问题吗?
展开
 我来答
viichi
2014-07-25 · TA获得超过355个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:210万
展开全部

代码

vector<int> ivec {10, 11, 12}

用到了c++11的新特性,初始化列表,initialize_list


而vistual studio 2012并不支持c++11这一特性。


代码

vector<int> ivec(10,-1);

正确,是因为 vector 存在这个版本的构造函数

explicit vector (size_type n, const value_type& val = value_type(),
                 const allocator_type& alloc = allocator_type());
追问
不是说VS已经在追赶C++14的新标准了吗为什么还没有兼容11的呢。有没有好的替代方法来初始化呢?
追答
vs2013 c++ 才真正全面支持c++11标准
(vs2013内部的版本号是vc12)

在c++11以前,很麻烦.. 还是换编译器吧。
kaixingui2012
2014-07-25 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6445万
展开全部

vector<string> ivec={"a","an"};  VS VC不支持这种初始化!

以下方法可借鉴:

vector<int> text(10);  //初始化大小为10,每个值均为0

vector<int> text(10,1);  //初始化大小为10,每个值均为1

int array[10]={...};
vector<int> text(array,array+10); //用array对vector进行初始化

如果是动态初始化,就用push_back(),例如:
ifstream infile("1.txt");
vector<string>vec;
string str;
while(infile>>str)
   vec.push_back(str);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式