c++学习系列之vector

来源:互联网 发布:淘宝卖家开花呗条件 编辑:程序博客网 时间:2024/06/08 03:47

最近看的一个项目多处用到了vector,然后我就顺便学习一下它的用法,做个笔记,也算加深一下印象。

vector是一个顺序容器。

1.创建

1.最简单的用法:std::vector<int> number;                   //初始容量和大小都为0,这不是创建容器的好方法,每次添加新元素都要复制到扩大的新区域。

容量是容器可以存储的元素个数,而大小是实际存储的元素个数。

2.在初始化的时候指定大小:std::vector<int> number(10); 

3.包含类对象:std::vector<Employee> emps(20);   //每个元素调用默认的Employee构造函数,用Employee对象来初始化(这个类是有要求的

4.不能像数组一样直接赋值,可以使用数组声明一组值,用容器初始化。

如:

std::vector<int> number(10);

int a[]={1,2,3,4,5}

for(int i=0;i<sizeof a/sizeof a[0];i++)

{

number[i]=a[i];

}

也可以使用外部数组的元素作为初始化值来创建容器:

如:std::vector<int> number(a,a+(sizeof a/sizeof a[0]));   //vector<int>构造函数需要两个指针,第一个指向数组中的第一个初始化元素,第二个指针指向最后一个初始化元素的下一个位置。

5.所有元素初始化为同一个值:vector<double> number(20,3.14);   //容器包含20个double 类型的值每个值都是3.14

2.访问元素

方法有三:下标,迭代器,容器的成员函数
1下标就和数组一样使用
2.迭代器
vector成员函数begin()返回的是iterator类型的对象,指向第一个元素end()返回最后一个元素后面的元素,递增迭代器可以遍历所有元素。

3使用at()函数可以访问元素,和下标的区别就是,如果越界会抛出out of range的异常

4.使用front()和back()可以访问第一个和最后一个元素

5.反向迭代器 

3.插入删除元素

容器具有很大的灵活性,添加元素,删除元素(只能在尾部操作)。它的存储空间是自动管理的。还可以在中间插入删除元素。

几个基本操作:

push_back()  末尾添加

pop_back()   末尾删除

erase()  删除一个或多个元素

clear()   删除全部

insert()