标准库vector对象(管理与储存相关的内存),vector是一个容器
作用为:存放各种类型的对象,简单的说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据
多功能,能够操作多种数据结构和算法的模板类和函数库
注意:如果你要表示的向量长度较长,容易内存泄漏,并且效率很低
vector作为函数的参数或者返回值,需要注意写法
double distance(vector<int>&a,vector<int>&b)其中&不能少
实例:vector<int>test//建立一个vector,int为数组元素的数据类型,test为动态数组名
test.push_back(1);
test.push_back(2);//把1和2压入vector,这样test[0]就是1,test[1]就是2
自己见到的实例:
vector<vector<point2f> > points; //定义一个二维数组
points[0].size(); //指第一行的列数
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;
(7)删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
(8)向量大小:vec.size();
(9)清空:vec.clear();
特别提示:这里有begin()与end()函数、front()与back()的差别
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>point;
for (int i = 0; i < 10; i++)
{
point.push_back(i);
}
//point.insert(point.begin() + 2,100);
//point.erase(point.begin() + 3);
point.erase(point.begin()+1, point.begin() + 4);
vector<int>::iterator it;
for (it = point.begin(); it != point.end(); it++)
cout << *it << endl;
point.push_back(1000);
cout << point.size()<<endl;
system("pause");
return 0;
}</int></int></vector></iostream></int></int></vector></point2f></int></int></int>

2、重要说明
vector的元素不仅仅可以是int,double,string,还可以是结构体,但是要注意:结构体要定义为全局的,否则会出错。
3。
(1)vector对象的重要属性在于其可以动态增长,使用时最好先初始化一个空的vector对象,然后添加
(2)vector对象常用的操作,除了string类型的常用操作之外,vector对象还有一个经常用到的操作”push_back(v)“在容器的末尾添加一个新元素v
(3)下标操作不添加元素,必须是已经存在的元素才能用下标操作符进行索引,通过下标进行赋值时,不会添加任何元素,应该用其特有的push_back操作
4,迭代器简介:迭代器是一种检查容器内元素并遍历元素的数据类型,所有的标准库容器都定义了相应的迭代器类型,只有少数的容器支持下标操作
(1)begin和end操作,用于返回迭代器其中begin指向操作数的第一个,而end指向最后一个的下一个位置是一个哨兵
(2)还有一种const_iterator类型只能读取,不能读写操作,用此迭代器进行解引用时,可能只得到一个指向const对象的引用
(3)使用const—iterator类型时,得到一个迭代器,自身值可以改变,但不能用来改变所指向的元素的值,区分const_iterator和const iterator的区别;const iterator唯一用处,改变他所指向的元素
(4)任何改变vector长度的操作都会使已存在的迭代器失效