操作
初始化
赋值式
std::vector<T> v = {....};
- 示例, 初始化int型容器
std::vector<int> v = {1, 2, 3, 4, 5};
拷贝式
std::vector<T> v(count, value);
- 示例, 初始化10个0
std::vector<int> v(10, 0);
预处理
若知悉需保存数据量size, 可用reserve提前申请空间, 避免多次动态申请内存消耗时间
std::vector<T> v;
v.reserve(size);
二维
std::vector<vector<T> > v;
增加
尾部插入
std::vector<T> v;
v.push_back(value);
指定位置插入
std::vector<T> v;
// 在index位置插入value
v.insert(v.begin() + index, value);
遍历
迭代器访问
std::vector<T> v;
for(vector<T>::iterator it = v.begin(); it != v.end(); it++) {
// *it
}
for(auto it = v.begin(); it != v.end(); it++) {
// *it
}
下标访问
std::vector<T> v;
for(unsigned int i = 0; i < v.size(); i++){
// v[i]
}
删除
删除区间元素
std::vector<T> v;
v.earse(v.begin() + x, v.end() - y);
删除末尾元素
std::vector<T> v;
v.pop_back();
删除index + 1位置元素
std::vector<T> v;
v.erase(v.begin() + index)
清空
std::vector<T> v;
v.clear();
修改
翻转
std::vector<T> v;
reverse(v.begin(), v.end());
算法
排序
数字排序
std::vector<T> v;
std::sort(v.begin(), v.end());
对象排序
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
class Student {
public:
string GetName() { return name; }
private:
string name;
};
bool Cmp(Student s1, Student s2) {
return s1.GetName() < s2.GetName();
}
std::vector<Student> Student;
std::sort(stu.begin(), stu.end(), Cmp);
数学计算
最值
#include <functional>
#include <algorithm>
// 迭代器指向最大值
std::vector<T>::iterator it = max_element(v.begin(), v.end());
std::vector<T>::iterator it = min_element(v.begin(), v.end());
// 下标
int index = v.begin() - it;
累加
accumulate(v.begin(), v.end(), 0, plus<T>())
累乘
accumulate(v.begin(), v.end(), 1, multiplies<T>())