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以前,很麻烦.. 还是换编译器吧。

参考技术A

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);

以上是关于C++语言中关于vector的初始化问题的主要内容,如果未能解决你的问题,请参考以下文章

标准库类型vector[C++ primer]

C++中操作vector时出现的赋值和初始化的问题

C++在类中定义vector并初始大小的问题

c++ vector二维数组初始化与vector切片

c++ vector二维数组初始化与vector切片

c++中vector<vector<T>>怎么初始化vector<T>?