array这里主要讲的是对于可以随机读取的数据进行某些变形到另外一种数据结构(map,unordered map,set,unordered set,取端点)或者是某些处理(排序)。
STL array & vector
支持随机读取的STL还有deque,但是这里我们只讨论O(1)的读取的vector和array,适用连续内存地址的。
// array
// 1. 固定大小的,初始化就要确定大小 std::array<int, 10> test。
// 2. 访问:[] 和 at,注意即使是const []也是可以用的。at会检测边界,抛出异常。
// 3. front & back获取前后的元素。
// 4. data:获取这个array的数据指针,可以变成普通的指针。
// 5. iterator: begin(end), cbegin(cend), rbegin(rend), crbegin(crend)。
// 6. fill: 对每个array填充这个数字。
// 7. 常用的函数:swap, size, empty, max_size
#include <iostream>
#include <cstring>
#include <array>
int main () {
const char* cstr = "Test string";
std::array<char,12> charray;
std::memcpy (charray.data(),cstr,12);
std::cout << charray.data() << '\n';
return 0;
}
// vector
// 1. 有着和上面的一样的操作。
// 2. push_back, pop_back。
// 3. insert: 插入另外一个vector,concat的操作。
// 4. erase:删除某个位置或者一个区间的数字,O(n)的操作。
// 5. resize:提前设置好size的大小,减少分配内存需要的时间。
// 6. emplace_back: 插入到后面。emplace是需要插入到固定的iterator里面。
// vector<bool>: 有flip操作,将每个flag翻转。
另外,其它的几个主题可以从以下进行看:
