序列式容器:每个元素均有固定位置,取决于插入时机和地点,和元素值无关。
一、vector
vector(向量):是一种顺序容器,事实上和数组差不多,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。
二、vector的初始化
vector <int> v;
vector <int>::iterator it;
三、vector的大小和容量
- v.size():返回向量中元素的个数
- v.capacity():返回当前向量张红所能容纳的最大元素值
- v.max_size():返回最大可允许的vector元素数量值
- v.empty():容器判空
四、vector的插入:push_back() 和 insert()
- v.push_back(const T& x):向量尾部增加一个元素X
- v.insert(iterator it,const T& x):向量中迭代器指向元素前增加一个元素x
- v.insert(iterator it,int n,const T& x):向量中迭代器指向元素前增加n个相同的元素x
- v.insert(iterator it,const_iterator first,const_iterator last):向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
五、 vector的删除:pop_back()和erase()
- v.erase(iterator it):删除向量中迭代器指向元素
- v.erase(iterator first,iterator last):删除向量中[first,last)中元素
- v.pop_back():删除向量中最后一个元素
- v.clear():清空向量中所有元素
六、vector的遍历:借助迭代器或者下标法[]
- v.at(int pos):返回pos位置元素的引用
- v.front():返回首元素的引用
- v.back():返回尾元素的引用
- v.begin():返回向量头指针,指向第一个元素
- v.end():返回向量尾指针,指向向量最后一个元素的下一个位置
- v.rbegin():反向迭代器,指向最后一个元素
- v.rend():反向迭代器,指向第一个元素之前的位置
七、vector的判断函数
- v.empty():判断向量是否为空,若为空,则向量中无元素
八、vector的其他函数
- v.swap(vector&):交换两个同类型向量的数据
- v.assign(int n,const T& x):设置向量中第n个元素的值为x
- v.assign(const_iterator first,const_iterator last):向量中[first,last)中元素设置成当前向量元素
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector <int> v; //定义vector
vector<int>::iterator it; //定义一个vector迭代器
for(int i = 10; i >= 1; i--) //插入数据
v.push_back(i);
cout<<"输出:";
for(it=v.begin();it!=v.end();it++) //输出迭代器的值
cout<<*it<<" ";
cout<<endl;
it-=1;
cout<<"最后一个的值为:"<<*it<<" "<<endl;
v.erase(it); //删除最后一个元素
cout <<"元素个数:" <<v.size() << endl; //输出元素个数
sort(v.begin(), v.end()); //vector排序
cout<<"排序后:";
for(it=v.begin();it!=v.end();it++) //输出vector元素
cout << *it << " ";
cout<<endl;
v.insert(v.begin(),100) ; //在pos位置插入一个elem
cout<<"第一个元素为:" <<v.front()<<endl;//输出第一个元素
v.pop_back(); //去掉最后一个元素
cout << "元素个数:" <<v.size() << endl;//输出元素个数
v.clear(); //vector清空
cout <<"清空后元素个数:" << v.size() << endl; //输出元素个数
return 0;
}