1 介绍
1.1 STL中的vector是一种动态数组容器,它可以随着元素数量的变化自动调整大小,同时提供了许多便利的成员函数来操作其中的元素。
1.2 vector使用连续的内存块来存储元素,因此在访问和处理元素时性能较好。它还支持常数时间的尾部插入和删除操作,并且可以随机访问任何位置的元素。
2 以下是vector常用的成员函数:
push_back():在vector的尾部插入一个元素。
pop_back():从vector的尾部删除一个元素。
size():返回vector中元素的数量。
empty():检查vector是否为空。
begin():返回指向vector的第一个元素的迭代器。
end():返回指向vector的最后一个元素的下一个迭代器。
front():返回vector的第一个元素的引用。
back():返回vector的最后一个元素的引用。
clear():删除vector中的所有元素。
erase():删除指定位置或范围内的元素。
insert():在指定位置插入一个或多个元素。
3 注意点
3.1. 排序
使用sort排序要: sort(c.begin(),c.end());
对所有元素进行排序,如果要对指定区间进行排序,可以对sort()里面的参数进行加减改动。
3.2. 访问
数组访问:
上面有简单的访问演示,下面进行扩充并复习
下标法: 和普通数组一样
注意:一维数组的下标是从0 00到v . s i z e ( ) − 1 v.size()-1v.size()−1,访问之外的数可能会出错
迭代器法: 类似指针一样的访问 ,首先需要声明迭代器变量,和声明指针变量一样,可以根据代码进行理解(附有注释)。
代码如下:
vector vi; //定义一个vi数组
vector::iterator it = vi.begin();//声明一个迭代器指向vi的初始位置
1
2
vector数组访问相关代码:
2.1.下标访问:
//添加元素
for(int i = 0; i < 5; i++)
vi.push_back(i);
//下标访问
for(int i = 0; i < 5; i++)
cout << vi[i] << " ";
cout << “\n”;
1
2
3
4
5
6
7
8
2.2.迭代器访问:
//迭代器访问
vector::iterator it;
//相当于声明了一个迭代器类型的变量it
//通俗来说就是声明了一个指针变量
//方式一:
vector::iterator it = vi.begin();
for(int i = 0; i < 5; i++)
cout << *(it + i) << " ";
cout << “\n”;
//方式二:
vector::iterator it;
for(it = vi.begin(); it != vi.end();it ++)
cout << *it << " ";
//vi.end()指向尾元素地址的下一个地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2.3.智能指针:
只能遍历完数组,如果要指定的内容进行遍历,需要另选方法。
auto 能够自动识别类型。
vector v;
v.push_back(12);
v.push_back(241);
for( auto i : v)
cout << i << " "; // 12 241
1
2
3
4
5
综上:
vi[i] 和 (vi.begin() + i) 等价
说明:只有vector和string的stl容器支持(it + i)的元素访问