vector向量
本质:对数组的封装
特点:读取能在常数时间完成
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的
初始化vector对象的方式
1、vector<T> v1; vector保存类型为T的对象。默认构造函数v1为空
2、vector<T> v2(v1); v2是v1的一个副本
3、vector<T> v3(n,i); v3包含n个值为i的元素
4、vector<T> v4(n); v4包含有值初始化元素的n个副本
具体使用
vector<int> ivec1;//初始化了一个空的向量
vector<int> ivec2(ivec1);//用空的向量又去初始化了一个空的向量
vector<string> svec1;
vector<string> svec2(ivec);
vector<int> ivec4(10,-1);//用10个-1上的元素初始化了ivec4
vector<string> svec(10,"hi!");//是10个hi!这样的字符串初始化了svec
vector常用函数
empty() 判断向量是否为空
begin() 返回向量迭代器的首元素
end() 返回向量迭代器末元素的下一个元素
clear() 清空向量
front() 第一个数据
back() 最后一个数据
size() 获得向量中数据大小
push_back(elem) 将数据插入向量尾
pop_back() 删除向量尾部数据
…… ……
举个例子
int main()
{
vector<int> vec;
vec.push_back(10);
vec.push_pop();//会将上面插入的10删掉
cout << vec.size() <<endl;
return 0;
}
遍历时可以像数组一样
for(int k=0 ;k<vec.size(); k++)
{
cout<< vec[k] <<endl;
}
迭代器:iterator
int main()
{
vector vec;
vec.push_back("hello");
vector<string>::iterator citer = vec.begin();
for(;citer != vec.end();citer++ )//vec.end()代表向量迭代器末元素的下一个元素
{
cout<< *citer << endl;
}
return 0;
}