您的位置:首页 > 编程语言 > C语言/C++

c++vector对象初始化

2016-08-15 23:24 337 查看

C++vector对象初始化

因为最近在准备C++,用到了vector STL,但是发现自己完全不太会用,所以上网查了一下一些常用的初始化方法(其实就是把vector当做一个安全的动态数组即可),其他使用方法基本类似于C的数组,主要是初始化有些多元化,这里详细列举一下。

下面代码用到的两个iter量声明


vector<int>::iterator int_ite;
vector<string>::iterator string_ite;


申请n个元素(或者进行初始化)

//vector<T> v(n)形式,v包含n 个元素
vector<int> ivec1(10);
//vector<T> v(n,i)形式,v包含n 个值为 i 的元素
vector<int> ivec(10,0);
for(int_ite=ivec.begin ();int_ite!=ivec.end ();int_ite++)
cout<<"ivec: "<<*int_ite<<endl;


拷贝一份已有的vector

//vector<T> v(v1)形式,v是v1 的一个副本
vector<int> ivec1(ivec);
for(int_ite=ivec1.begin ();int_ite!=ivec1.end ();int_ite++)
cout<<"ivec1: "<<*int_ite<<endl;


这里ivec是一个已有的vector,那么这种初始化方式会拷贝一份ivec,其为ivec1

用int/string数组初始化vector数组

//数组初始化vector
int iarray[]={1,2,3,4,5,6,7,8,9,0};
//count: iarray数组个数
size_t count=sizeof(iarray)/sizeof(int);
//int数组初始化 ivec3
vector<int> ivec3(iarray,iarray+count);
for(int_ite=ivec3.begin ();int_ite!=ivec3.end ();int_ite++)
cout<<"ivec3: "<<*int_ite<<endl;

//string数组初始化 svec1
string word[]={"ab","bc","cd","de","ef","fe"};
//s_count: word数组个数
size_t s_count=sizeof(word)/sizeof(string);
//string数组初始化 svec1
vector<string> svec1(word,word+s_count);
for(string_ite=svec1.begin ();string_ite!=svec1.end ();string_ite++)
cout<<"svec1: "<<*string_ite<<endl;


这里主要是注意vector初始化的第二个入参是数组(指针)+数组长度

应该就是指到数组尾,然后把这段地址空间的全部拷贝进vector……

使用back_inserter函数初始化vector

其实按照C++的定义来说,这个不算初始化……应该是赋值。。。

//用 back_inserter 函数
vector<int> ivec4;  //空对象
fill_n(back_inserter(ivec4),10,3);  //10个3 填充ivec4.
for(int_ite=ivec4.begin ();int_ite!=ivec4.end ();int_ite++)
cout<<"ivec4: "<<*int_ite<<endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: