C++语言中关于vector的初始化问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++语言中关于vector的初始化问题相关的知识,希望对你有一定的参考价值。
这是我的代码:
#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> ivec10,11,12;
这样也是不能初始化的
但是:vector<int> ivec(10,-1);
就可以,里面有十个元素,每个都为-1;
我是按照C++primer那本书里面的例子打的,为什么也会出错呢?是编译器的问题吗?
代码
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,每个值均为0vector<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);
以上是关于C++语言中关于vector的初始化问题的主要内容,如果未能解决你的问题,请参考以下文章