读书笔记:
vector
头文件:
#include<vector>
vector支持随机访问,因此只要知道位置,便可以在常量时间内访问任何一个元素。
使用reserve()保留适当容量,避免重新分配内存。
std::vector<int> v;// create an empty vector
v.reserve(80); // reserve memory for 80 elements
避免重新分配内存的另一个方法是,初始化期间就向构造函数传递额外实参,构建足够的空间。
std::vector<T> v(5);//create a vector and initializes it with five values
std::vector<Elem> v | 创建一个空的vector |
std::vector<Elem> v(v2) | 创建v2的同型vector,并成为v2的一份拷贝(每个元素都被复制) |
std::vector<Elem> v=(v2) | 创建一个新的vector作为v2的拷贝(每个元素都被复制) |
std::vector<Elem> v(n) | 创建一个大小为n的vector |
std::vector<Elem> v(n,elem) | 创建一个大小为n,每个元素值为elem的vector |
v.empty() | 返回是否容器为空,空返回true,不为空返回true |
v.size() | 返回目前的元素个数 |
v.reserve(num) | 预留大小为num的内存 |
v=v2 | 将v2的全部元素赋值给v |
v.assign(n,elem) | 复制n个elem,赋值给v |
v1.swap(v2) | 置换v1和v2的数据 |
swap(v1,v2) | 置换v1和v2的数据 |
v[idx] | 返回索引idx所指的元素 |
v.at(idx) | 返回索引idx所指的元素(如果idx超出范围,抛出range-error异常) |
v.front() | 返回第一元素 |
v.back() | 返回末尾元素 |
v.begin() | 返回一个random-access iterator 指向第一元素 |
v.end() | 返回一个random-access iterator 指向末尾元素的下一个位置 |
v.push_back(elem) | 附加一个elem的拷贝与末尾 |
v.pop_back() | 移除最后一个元素 |
v.insert(pos,elem) | 在iterator位置pos之前插入一个elem拷贝,并返回新元素的位置 |
v.insert(pos,n,elem) | 在iterator位置pos之前插入n个elem拷贝,并返回第一个新元素的位置 |
v.insert(pos,beg,end) | 在iterator位置pos之前插入区间[beg,end)内所有元素的一份拷贝,并返回第一个新元素的位置 |
v.emplace(pos,args) | 在iterator位置pos之前插入一个以args为初值的元素,并返回新元素的位置 |
v.emplace_back(args) | 附加以args为初值的元素于末尾 |
v.erase(pos) | 移除iterator位置pos上的元素,返回下一元素的位置 |
v.erase(beg,end) | 移除区间[beg,end)内所有元素,返回下一元素的位置 |
v.resize(num) | 将元素数量改为num(如果size 变大,多出来的新元素都需以默认构造函数完成初始化) |
v.resize(num,elem) | 将元素数量改为num(如果size 变大,多出来的新元素都是elem的拷贝) |
v.clear() | 移除所有元素,将容器清空 |