一:vector是C++标准模版库(STL,Standard Template Library)中的部分内容。之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说:vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
使用vector容器之前必须加上<vector>头文件:#include<vector>;
vector属于std命名域的内容,因此需要通过命名限定:using std::vector;也可以直接使用全局的命名空间方式:using namespace std;
二:常用的成员函数:
申明 vector<int> v;
c.push_back(elem)在尾部插入一个elem数据。
vector<int> v;
v.push_back(1);
c.pop_back()删除末尾的数据。
vector<int> v;
v.pop_back();
c.assign(beg,end)将[beg,end)一个左闭右开区间的数据赋值给c。
vector<int> v1,v2;
v1.push_back(10);
v1.push_back(20);
v2.push_back(30);
v2.assign(v1.begin(),v1.end());
c.assign (n,elem)将n个elem的拷贝赋值给c。
vector<int> v;
v.assign(5,10);//往v里放5个10
c.at(int index)传回索引为index的数据,如果index越界,抛出out_of_range异常。
vecto<int> v;
cout << v.at(2) << endl;//打印vector中下标是2的数据
v.begin()返回指向第一个数据的迭代器。
v.end()返回指向最后一个数据之后的迭代器。
v.capacty() 容器的容量
v.size() 容器的大小
v.empty() 判断容器是否为空
sort(v.begin(),v.end()) 对v容器内的元素进行排序
定义一个迭代器:vector<int>::iterator it;
erase (const_iterator start, const_iterator end);//删除迭代器从 start 到end 之间的元素
erase(const_iterator pos) : //删除迭代器指向的元素
clear(); //删除容器中所有元素
巧用 swap 收缩内存空间
vector<int> v1:
v1. reserve (1000) ;
v1.push_back (10) ;
v1.push_back (20) ;
v1.push_back (30) ;
v1.push_back (40) ;
cout<<"*: "<<v1. capacity0<<", th:"<<v1.size()<<endl;//1000
//res ize只能修改大小 不能修改容量
//v1.resize(4);
vector<int>(v1) .swap(v1) ;
cout<<"*lit: "<<v1. capacityO<c", Nd: "«evl.size()<<endl; //4 4
很多时候大量的删除数据,或者通过使用reserver(),结果vector的空间远远大于实际的需要。所以需要压缩vector到它的实际大小。resize()能增加vector的大小。clear()仅仅移除容器内的数据,不能改变capacity()的大小,所以对vector进行压缩非常重要。