标签:额外 数据结构 情况 清空 erase sign 子串 数制转换 pre
目录
选择什么容器根据业务需求, 研读STL剖析了解底层数据结构, 更加清楚各种优势劣势
迭代器被设置为左闭右合带来的编程假设
两大类型的容器初始化——同类型容器拷贝,迭代器范围拷贝
两大类型的容器赋值——=号赋值,assign赋值
swap交换容器内容
除Array,其他容器只是交换数据结构,不涉及元素拷贝插入删除,常数时间
容器之比较——任何容器都支持== !=;除无序关联(unordered的关联容器)外,其他都支持< > <= ……各种比较
容器的== !=由元素的==实现;其他由<实现;
然而<也足以推断==情况(交换位置多比一次即可)
失效操作请剖析STL
以下增删改查针对绝大多数顺序容器
增——拷贝
emplace区别主要是可用提供初始化器而非元素对象
front_list有自己的insert和emplace,只支持下面的front型操作 | |
---|---|
.push_back(t) | |
.emplace_back(args) | args是可用以来初始化元素的东西 |
.push_front(t) | vecotr和string不支持,费时 |
.emplace_front(args) | vecotr和string不支持 |
.insert(p, t) | 这个及以下的都返回插入元素的迭代器 |
.emplace(p, args) | |
.insert(p, n, t) | n个t |
.insert(p, b, e) | 迭代器范围 |
.insert(p, il) | il,初始化列表 |
查(访问)——引用访问
空或越界除了at外,都未定义 | |
---|---|
.back() | |
.front() | |
[] | 和at只能用于vec,str,deque,arr |
.at() | 下标越界,返回out_of_range |
不检查合法性 | |
---|---|
.pop_back() | f_l不支持 |
.pop_front() | vec, str不支持 |
.erase(p) | 迭代器 |
.erase(b, e) | 范围 |
.clear() | 清空 |
.resize(n) | |
.resize(n, t) | 若为增大,新元素初始化为t |
deque不支持后两个 | |
---|---|
.shrink_to_fit() | capacity减小到size |
.capacity() | |
.reserve(n) | 小于等于当前什么都不做 |
强制释放或缩小vector内容
// 强制释放
vector<int> vec;
{
vector<int>().swap(vec);
}
// 强制缩小
vector<int> vec;
swap(vector<int>(vec), vec);
指针、迭代器、引用,失效指不再表示任何元素
删
它是单向链表,获取前驱比较麻烦
.before_begin() | 表头前不存在的元素,不可解引用 |
.insert_after(p, t) | 返回最后一个插入的元素的迭代器 |
.insert_after(p, n, t) | |
.insert_after(p, b, e) | |
.insert_after(p, il) | |
.emplace_after(p, args) | |
.erase_after(p) | 返回被删除元素的后一个元素的迭代器 |
.erase_after(b, e) |
string s(cp, n) | cp是字符数组指针 |
string s(str2, pos2) | str2是已存在string |
string s(s2, pos2, len2) |
s.substr(pos, n) // 返回子串
修改
.insert(pos, args) | pos可以是下标,返回引用;可以是迭代器,返回迭代器 |
.erase(pos, len) | len省略删完,返回引用 |
.assign(args) | 返回引用 |
.append(args) | 返回引用 |
.replace(range, args) | range可以是pos,n(下标长度)或者b,e(迭代器),返回引用 |
找到返回下标,没有就string::npos(一个string::size_type值,-1,但是因为无符号,所以是最大值) | |
---|---|
.find(args) | 第一次出现位置 |
.rfind(args) | 最后一次出现位置 |
.find_first_of(args) | args中任意字符第一次出现 |
.find_last_of(args) | |
.find_first_not_of(args) | 第一个不再args中的字符 |
.find_last_not_of(args) |
比较.compare
参数格式;返回值:0等于 >0大于 <0小于 | n表示长度 |
---|---|
s2 | |
pos1, n1, s2 | |
pos1, n1, s2, pos2, n2 | |
cp | |
pos1, n1, s2 | |
pos1, n1, cp, n2 |
数制转换
to_string(val) | |
stoi(s, p, b) | 后面都一样,s字符串,p是size_t指针,保存第一个非数字内容的下标 |
stol | b是转换基数 |
stoul | 整型不识别e |
stoll | |
stoull | |
stof(s, p) | 识别e |
stod | |
stold |
.empty() | |
.size() | |
.swap() | |
swap(a, b) | |
.pop() | 删除而不返回 |
.push(item) | |
.emplace(args) | |
.top() | 可修改 |
.front() | 可修改 |
.back() | |
.pop() | |
.push(t) | |
.emplace(args) |
.pop() | |
.top() | 不能修改 |
.push() | |
.emplace() |
标签:额外 数据结构 情况 清空 erase sign 子串 数制转换 pre
原文地址:https://www.cnblogs.com/YanceW/p/11695611.html