STL(标准模板库)
1.vector (动态数组)
1.1 头文件
#include <vector>
1.2 初始化
vector<int> v1; // 定义名为v1的元素类型为int的vector
vector<float> v2; // 定义名为v2的元素类型为float的vector
vector<int> v3(n); // 定义一个长度为n的数组, 初值默认是0
vector<int> v4(n, 0); // 定义一个长度为n的数组, 初始化为0
vector<int> v5{1, 2, 3, 4, 5}; // 定义元素为1, 2, 3, 4, 5的数组
vector<int> v6(v5); // 拷贝构造
vector<int> v7[5]; // 行为5, 列可变的二维数组
vector<vector<int> > v8; // 行和列均可变长二维数组
vector<vector<int> > v9(n, vector<int>(m, 0)); // n行m列二维数组, 初始化为0
1.3 元素访问
vector<int> v{1, 2, 3, 4, 5};
//1.下标访问
for (int i = 0; i < 5; i ++)
cout << v[i] << endl;
//2.迭代器访问
vector<int>::iterator it;
for (it = v.begin(); it != v.end(); it ++)
cout << *it << endl;
for (int i = 0; i < 5; i ++)
cout << *(it + i) << endl;
//3.智能指针
for(auto i : v)
cout << i << endl;
1.4 函数
vector的增删改查
函数 | 含义 |
---|---|
v.front(); | 返回v的第一个元素 |
v.back(); | 返回v的最后一个元素 |
v[i]; | 返回v中第i个元素 |
v.size(); | 返回v中元素个数 |
v.empty(); | 判断v是否为空 |
v.clear(); | 清空v中的元素 |
v.push_back(x); | 插入一个元素x |
v.pop_back(); | 删除尾元素 |
v.insert(it, x); | 向v的任意一个迭代器it处插入一个元素x |
v.erase(it); | 删除迭代器it处的元素 |
v.begin(); | 返回首元素的迭代器 |
v.end(); | 返回尾元素的迭代器 |
v.resize(n); | 改变数组大小为n |
注意[^1]
1.v[i]与*(v.begin()+i)等价; 2.只有vector与string的STL容器支持*(it+i)的元素访问;