乒乓世界杯_u20世界杯最新战况 - chhtzx.com

C++STL中vector的初始化

4748

vector的初始化有很多方式,在N维初始化时还会一些容易出现错误的地方。下面进行总结

以下的总结均以int作为模板参数

一维vector的初始化

vector的构造函数通常来说有五种,如下:

vector():创建一个空vector

vector(int nSize):创建一个vector,元素个数为nSize

vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t

vector(const vector&):复制构造函数

vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中

注意第三条,如果传入的是两个参数的话,第一个参数是大小,第二是个初值。

下面为测试代码以及运行结果:

#include

#include

using namespace std;

int main(){

////////////////

//构造函数部分

////////////////

//空vector

vector vec1();

cout<<"vec1[0] = "<

//构造一行空vector

vector vec2(1);

cout<<"vec2[0] = "<

//构造一行指定值得vector

vector vec3(5,1);

cout<<"vec3[0-5] = ";

for(int i=0;i<5;i++){

cout<<' '<

}

cout<

//利用拷贝构造函数构造

vector vec4(vec3);

cout<<"拷贝构造 vec4[0-5] = vec3[0-5] = ";

for(int i=0;i<5;i++){

cout<<' '<

}

cout<

//复制前闭后开的一段到vector中

int a[5]={1,2,3,4,5};

vector vec5(a,a+5);

cout<<"vec5[0-5] = ";

for(int i=0;i<5;i++){

cout<<' '<

}

cout<

}

结果如下:

二维vector的初始化

先看怎么写:

vector > ivec(m ,vector(n));

简单来说就是要利用上面的第三种方式,让每个元素的初值是一个一维的vector。另外前面的模板参数里面也是一个嵌套的模式。

这里有一点要非常注意,有的编译器在int后面的两个> >之间一定要有一个空格,否则编译器会报错,因为它会认为>>是一个c++的运算符(有的不用这样。