STL vector

 

操作

初始化

赋值式

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>())