STL(标准模板库)

发布时间 2023-06-20 16:37:30作者: PHASELESS!

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)的元素访问;