模板(各种类型通用):

  template<class 模板名>

注意:若要使用模板,在每个自定义函数前都必须加上此定义。

排序(algorithm头文件):

  sort(头指针l,尾指针r):(void)将左闭右开区间[l,r)中的元素从小到大排序。时间复杂度O(nlogn)。

  sort(头指针l,尾指针r,自定义比较函数cmp):(void)将左闭右开区间[l,r)中的元素按自定义比较顺序排序。时间复杂度O(nlogn)。

检索(algorithm头文件):

  lower_bound(头指针l,尾指针r,指定元素x):(iterator)在一个已经升序排序好的左闭右开区间[l,r)中返回第一个大于或等于x的位置指针;若所有元素都小于x,则返回尾指针r。时间复杂度O(logn)。

  upper_bound(头指针l,尾指针r,指定元素x):(iterator)在一个已经升序排序好的左闭右开区间[l,r)中返回第一个大于x的位置指针;若所有元素都小于或等于x,则返回尾指针r。时间复杂度O(logn)。

去重(algorithm头文件):

  unique(头指针l,尾指针r):(iterator)在一个已经有序的左闭右开区间[l,r)中将不重复的所有元素按照原来的顺序堆积在区间内左侧,并覆盖掉原来的元素,其后的元素保持不变。返回去重后的最后一个元素所在位置的后一个位置指针。

不定长数组:vector<类型名>变量名(vector头文件):

  .size():(unsigned long long)返回数组元素个数。

  .begin():(iterator)返回数组首位置(vector中元素在内存中连续存储)。

  .end():(iterator)返回数组尾位置的下一个位置(vector中元素在内存中连续存储)。

  .resize(指定大小n):(void)改变数组大小为n,留下前n个元素,后面的元素截断舍弃;若n大于数组原大小,则在数组末尾加入未初始化的元素直到大小为n为止。

  .push_back(元素x):(void)在数组末尾添加x。

  .pop_back():(void)如果数组中还有元素,删除数组最后一个元素。

  .clear():(void)清空数组。

  .empty():(bool)返回数组是否为空。

  vector<类型>变量名a(长度n):(void)将数组a的长度初始化为n。

  vector<类型>变量名a(长度n,值v):(void)将数组a的长度初始化为n,每个元素的值初始化为v。

集合1(不可重):set<类型名>变量名

集合2(可重):multiset<类型名>变量名

(set头文件):

  .insert(元素x):(void)在集合中添加元素x(set只添加一次)。时间复杂度O(logn)。

  .size():(unsigned long long):返回集合所有元素的个数。

  .count(元素x):(unsigned long long)返回集合中元素x的个数。时间复杂度O(logn)。

  .erase(元素x):(unsigned long long)返回集合中元素x的个数,若有,顺便将其全部删除。时间复杂度O(logn)。

  .erase(迭代器it):(void)删除迭代器it所指向的元素。时间复杂度O(logn)。

  .erase(头指针l,尾指针r):(void)删除集合中左闭右开区间[l,r)中的元素(集合中元素已经从小到大排好序,但非连续存储)。

  .clear():(void)清空集合。

  .empty():(bool)返回集合是否为空。

  .lower_bound(指定元素x):(iterator)作用同上(集合中元素已经从小到大排好序,但非连续存储)。

  .upper_bound(指定元素x):(iterator)作用同上(集合中元素已经从小到大排好序,但非连续存储)。

  .begin():(iterator)返回集合首位置(集合中元素已经从小到大排好序,但非连续存储)。

  .end():(iterator)返回集合尾位置的下一个位置(集合中元素已经从小到大排好序,但非连续存储)。

  .find(指定元素x):(iterator)返回第一次在集合中出现的元素x所在的位置,若元素x不存在,则返回end迭代器。

  set_union(集合A的头指针,集合A的尾指针,集合B的头指针,集合B的尾指针,inserter(集合C,集合C的头指针)):(void)将集合A与B的“并集”存放入集合C中(对于每一个元素x,C.count(x)==max(A.count(x),B.count(x)))。

  set_intersection(集合A的头指针,集合A的尾指针,集合B的头指针,集合B的尾指针,inserter(集合C,集合C的头指针)):(void)将集合A与B的“交集”存放入集合C中(对于每一个元素x,C.count(x)==min(A.count(x),B.count(x)))。

映射:map<键类型名,值类型名>变量名(map头文件):

  .clear():(void)清空所有的键和值。

  .count(元素x):(bool)返回x是否在键中。时间复杂度O(logn)。

  .erase(元素x):(bool)返回键中是否有x,若有,顺便将其及其对应的值删除。时间复杂度O(logn)。

  .erase(头指针l,尾指针r):(void)删除映射中按键排列的左闭右开区间[l,r)中的键和值(map已经按键的值从小到大排好序,但非连续存储)。

  .empty():(bool)返回键和值是否为空。

  .lower_bound(指定键x):(iterator)作用同上(map已经按键的值从小到大排好序,但非连续存储)。

  .upper_bound(指定键x):(iterator)作用同上(map已经按键的值从小到大排好序,但非连续存储)。

  .begin():(iterator)作用同上(map已经按键的值从小到大排好序,但非连续存储)。

  .end():(iterator)作用同上(map已经按键的值从小到大排好序,但非连续存储)。

栈:stack<类型名>变量名(stack头文件):

  .push(元素x):(void)将x入栈。

  .pop():(void)如果还有元素,将最顶元素弹出栈。

  .top():(元素类型)如果还有元素,返回栈顶元素(不删除)。

  .empty():(bool)返回栈是否为空。

队列:queue<类型名>变量名(queue头文件):

  .push(元素x):(void)将x加入队尾。

  .pop():(void)如果还有元素,将队首元素出队。

  .front():(元素类型)如果还有元素,返回队首元素(不删除)。

  .empty():(bool)返回队列是否为空。

双端队列:deque<类型名>变量名(queue头文件):

  .size():(unsigned long long)返回队列元素个数。

  .resize(指定长度n):(void)改变队列长度为n,留下前n个元素,后面的元素截断舍弃;若n大于队列原大小,则在队列末尾加入未初始化的元素直到大小为n为止。

  .front():(元素类型)如果还有元素,返回队首元素(不删除)。

  .back():(元素类型)如果还有元素,返回队尾元素(不删除)。

  .push_front(元素x):(void)在队列前端添加x。

  .pop_front():(void)如果队列中还有元素,删除队列最前一个元素。

  .push_back(元素x):(void)在队列末尾添加x。

  .pop_back():(void)如果队列中还有元素,删除队列最后一个元素。

  .clear():(void)清空队列。

  .empty():(bool)返回队列是否为空。

优先队列1:priority_queue<类型名>变量名;

越大的元素优先级越高。

优先队列2:priority_queue<类型名,vector<类型名>,greater<类型名> >变量名;

越小的元素优先级越高。

优先队列3:priority_queue<类型名,vector<类型名>,自定义比较结构体(结构体内用bool重载括号操作符“()”且带有两个参数)cmp>变量名;

自定义优先级设定方法。

(queue头文件):

  .push(元素x):(void)将x加入优先队列。

  .pop():(void)如果还有元素,将优先级最高的元素出队。

  .top():(元素类型)如果还有元素,返回优先级最高元素(不删除)。

  .empty():(bool)返回优先队列是否为空。

bitset(bitset头文件)

  bitset<二进制位数n>变量名:声明一个含有n位二进制数的bitset,默认其全部位为零。

  bitset<二进制位数n>变量名(数值v):声明一个含有n位二进制数的bitset,其二进制值等于v。

  bitset<二进制位数n>变量名(string(“字符串s”)):声明一个含有n位二进制数的bitset,其二进制值为s所表示的二进制数(s中的低位字符对应bitset中的高位)。

  .any():(bool)返回bitset中是否含1。

  .none():(bool)返回bitset中是否全为0。

  .count():(unsigned long long)返回bitset中有几个1。

  [pos]:访问第pos位(类似于数组,bitset位数从0编号)。

  .set():(unsigned long long)将bitset所有位设为1。

  .reset():(unsigned long long)将bitset所有位设为0。

  .flip():(unsigned long long)将bitset所有位取反。

  bitset也可以进行位运算,原则和整数一致,返回一个同等长度的bitset。

C++ STL常用知识的更多相关文章

  1. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  2. javascript常用知识点集

    javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...

  3. AngularJS进阶(十二)AngularJS常用知识汇总(不断更新中....)

    AngularJS常用知识汇总(不断更新中....) 注:请点击此处进行充电! app.controller('editCtrl',['$http','$location','$rootScope', ...

  4. 打造自己的Android常用知识体系

    前言 Android常用知识体系是什么鬼?所谓常用知识体系,就是指对项目中重复使用率较高的功能点进行梳理.注意哦,不是Android知识体系. 古语道:学而不思则罔,思而不学则殆.如果将做项目类比为“ ...

  5. C++ STL 常用算术和生成算法

    C++ STL 常用算术和生成算法 accumulate() accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值. #include<numeric> ...

  6. C++ STL 常用拷贝和替换算法

    C++ STL 常用拷贝和替换算法 copy() 复制 vector<int> vecIntA; vecIntA.push_back(1); vecIntA.push_back(3); v ...

  7. C++ STL 常用排序算法

    C++ STL 常用排序算法 merge() 以下是排序和通用算法:提供元素排序策略 merge: 合并两个有序序列,存放到另一个序列. 例如: vecIntA,vecIntB,vecIntC是用ve ...

  8. C++ STL 常用查找算法

    C++ STL 常用查找算法 adjacent_find() 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器.否则返回past-the-end. ...

  9. C++ STL 常用遍历算法

    C++ STL 常用遍历算法 STL的容器算法迭代器的设计理念 1) STL的容器通过类模板技术,实现数据类型和容器模型的分离 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了 ...

随机推荐

  1. office2016产品密钥

    office2016专业增强版产品密钥: VL批量授权版:QCKNG-29MKJ-74G4B-X7DT8-JFHBB(亲测有效) office2016专业增强版密钥(Retail零售版),可电话激活 ...

  2. max_delay/min_delay和input_delay/output_delay

    今天在使用DC设置随路时钟的时候发现里两个比较容易混淆的设置:max_delay/min_delay和input_delay/output_delay. 1)max_delay/min_delay设置 ...

  3. 2018-2019-2 20165315《网络攻防技术》Exp5 MSF基础应用

    2018-2019-2 20165315<网络攻防技术>Exp5 MSF基础应用 目录 一.实验内容 二.实验步骤 1.一个主动攻击实践 ms08_067(成功) 2.一个针对浏览器的攻击 ...

  4. 20-matlab全排列-函数调用

    matlab中global的用法 Matlab 中子函数不传参直接调用主函数global变量方法  在一个m文件里要调用一个函数(自定义的),但是我希望这个函数能利用并修改workspace中的变量( ...

  5. 分别用for、while和do-while循环语句以及递归方法计算n!,并输出算式

    一.用for循环实现 实验过程: 实验结果: 二.用while循环实现 实验结果: 三.用do while循环实现 实验结果: 四.用递归算法实现 实验结果: 实验心得: 此次实验中必须熟悉for循环 ...

  6. vs code 配置 php xdebug

    1.安装扩展 php debug 2.下载xdebug插件 做个页面输出phpinfo(),复制到这个页面 https://xdebug.org/wizard.php 提交后会告诉你机子要下载哪个版本 ...

  7. slot-scope

    插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示.以及怎样显示由父组件来决定. 实际上,一个slot最核心的两个问题在这里就点出来了,是显示不显示和怎样显示. 由于插槽是一块模板,所 ...

  8. 现代编译原理——第二章:语法分析之LL(K)

    转自: http://www.cnblogs.com/BlackWalnut/p/4472122.html LL(K)语法分析技术是建立在预测分析的技术之上的.我们先来了解预测分析技术.考虑以下文法: ...

  9. VB 性能优化点

    1.将Single,Double和Currency类型的变量替换为Integer或Long类型的变量:10倍 2.避免使用变体: 慢:Dim FSO as object     Set FSO = N ...

  10. 基于xposed实现android注册系统服务,解决跨进程共享数据问题

    昨花了点时间,参考github issues 总算实现了基于xposed的系统服务注入,本文目的是为了“解决应用之间hook后数据共享,任意app ServiceManager.getService就 ...