第一次使用vector,感觉网上讲的太乱了,整理一下。
vector 是 C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.
用法:
1.文件包含:
首先在程序开头处加上#include以包含所需要的类文件vector
还有一定要加上using namespace std;
2.变量声明:
2.1 例:声明一个int向量以替代一维的数组:vector a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。
vector 创建举例:
1 基本操作
(1)头文件#include<vector>.
(2)创建vector对象,vector<int> vec;
(3)尾部插入数字:vec.push_back(a);
(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。
(5)使用迭代器访问元素.
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(6)删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
(7)向量大小:vec.size();
(8)清空:vec.c
要明白vector 的使用范围是很灵活的,可以用来存储 int, point, rect, struct 等类型。
vector<int> vec; //int 表示存储数据类型,vec 为变量名;
vector<point> vec; //创建保存point类型的容器
vector<Rect> vec; //创建保存Rect类型的容器种vector声明
vector<int> v1; //定义空的
vector<int> v2(10); //产生大小为10的vector
vector<int>v3(10,-1); //产生大小为10,并且每个元素都是-1的vector
vector<int>v4(v3); //用一个vector产生一个vecotr
int arr[5]={1,2,3,4,5};
vector<int>v5(arr,&arr[5]); //以区间[beg;end)做为初值的vectoror 的使用不用手动释放,系统自动释放
3 如何得到向量中的元素?其用法和数组一样:
1.push_back 在数组的最后添加一个数据
2.pop_back 去掉数组的最后一个数据
3.at 得到编号位置的数据
4.begin 得到数组头的指针
5.end 得到数组的最后一个单元+1的指针
6.front 得到数组头的引用
7.back 得到数组的最后一个单元的引用
8.max_size 得到vector最大可以是多大
9.capacity 当前vector分配的大小
10.size 当前使用数据的大小
11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve 改变当前vecotr所分配空间的大小
13.erase 删除指针指向的数据项
14.clear 清空当前的vector
15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty 判断vector是否为空
18.swap 与另一个vector交换数据
3.1 详细的函数实现功能:其中vector<int> c.
c.clear() 移除容器中所有数据。
c.empty() 判断容器是否为空。
c.erase(pos) 删除pos位置的数据
c.front() 传回第一个数据。
c.insert(pos,elem) 在pos位置插入一个elem拷贝
c.pop_back() 删除最后一个数据。
c.push_back(elem) 在尾部加入一个数据。
c.resize(num) 重新设置该容器的大小
c.size() 回容器中实际数据的个数。
c.begin() 返回指向容器第一个元素的迭代器
c.end() 返回指向容器最后一个元素的迭代器
“`