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那本书里面的例子打的,为什么也会出错呢?是编译器的问题吗? 展开
#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那本书里面的例子打的,为什么也会出错呢?是编译器的问题吗? 展开
2个回答
展开全部
代码
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以前,很麻烦.. 还是换编译器吧。
展开全部
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);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询