首页 > 编程语言 >c++算法学习笔记 (21) STL

c++算法学习笔记 (21) STL

时间:2024-04-06 19:58:32浏览次数:30  
标签:返回 21 迭代 STL 元素 back c++ bound 为空

1.vector:

        变长数组,倍增的思想

        size()返回元素个数

        empty()返回是否为空

        clear()清空

        front()/back()元素

        push_back()/pop_back()

        begin()/end()迭代器

        []

        支持比较运算

2.pair<int,int>:

        first:第一个元素

        second:第二个元素

        支持比较运算,先比较first再比较second

        make_pair()/{}初始化

3.string:字符串

        substr()截取字串

        c_str()把string转化成char*,用法strcpy(c,s.c_scr())

        size()/length()返回字符串长度

        empty()返回是否为空

        clear()清空

4.queue:队列

        push():队尾插入

        pop():队尾弹出

        front():返回队头

        back():返回队尾

        size()返回元素个数

        empty()返回是否为空

        (无clear)

5.priority_queue:优先队列,默认大根堆

        priority_queue(int,vector<int>)

        push():插入

        pop():弹出堆顶

        top():返回堆顶

        可以自定义比较规则

6.stack:栈

        push():栈顶插入

        pop():栈顶弹出

        top():返回栈顶元素

        size()返回元素个数

        empty()返回是否为空

7.deque:双端队列

        size()返回元素个数

        empty()返回是否为空

        clear()清空

        front()/back()

        push_back()/pop_back():后插,后删

        push_front()/pop_front():前插,前删

        begin()/end()

        []

8.set,map,multiset,multimap:基于平衡二叉树(红黑树),动态维护有序序列

        size()返回元素个数

        empty()返回是否为空

        clear()清空

        begin()/end() 

        ++/--返回前驱和后驱

set/multiset:不能有重复元素

        insert()插入

        find()查找

        count()查找某数的个数

        erase()删除所有指定的数/删除迭代器 O(k+logn)

        lower_bound()/upper_bound():返回>=x的最小的数的迭代器/返回>x的最小的数的迭代器

map/multimap:不能有重复元素

        insert()插入的数是pair

        find()查找

        erase()删除所有指定的数/删除迭代器

        []     O(logn)

        lower_bound()/upper_bound():返回>=x的最小的数的迭代器/返回>x的最小的数的迭代器

9.unordered_set,unordered_map,unordered_multiset,unordered_multimap:哈希表

        和8类似,增删改查的时间复杂度为O(1)

        不支持lower_bound()/upper_bound(),++,--

10.bitset:压位

8B->8bit=1B,节省8倍内存空间

bitset<10000> s;

~,&,|,^

>>,<<

==,!=

[]

count()返回有多少个1

any()判断是否至少有一个1

none()判断是否全为0

set()所有位置置1

set(k,v)第k位变成v

reset()所有位变成0

flip()等价于~

flip(k)把第k位取反

标签:返回,21,迭代,STL,元素,back,c++,bound,为空
From: https://blog.csdn.net/l141930402/article/details/137428838

相关文章

  • c++算法学习笔记 (19) 堆
    1.堆排序:(1)插入一个数:heap[++size]=x;up(size);//在最后插入,再往上移(2)求集合中最小值:heap[1](3)删除最小值:swap(heap[1],heap[size]);size--;down(1);//将最小值移到最后直接删除,再将heap[1]下移到合适位置(4)删除任意一个元素:swap(heap[k],heap[size]);size--;down(1)orup(1);/......
  • AISing Programming Contest 2021(AtCoder Beginner Contest 202)
    D-aabababaa根据题意从左往右进行分析如果当前该字母为a那么存在两种情况一种为b的数量为0一种为剩余的k的数量小于右边所有情况的总和其总和对应为C(剩余的长度,b的个数)反之则为b点击查看代码intget(intx,inty){intans=1;for(inti=1;i<=y;i++){ans=(x-i......
  • C/C++预处理过程
    目录前言:1.预定义符号2. #define定义常量3. #define定义宏4.带有副作用的宏参数5.  宏替换的规则6. 宏和函数的对比7.#和##8. 命名约定9. #undef10. 命令行定义11. 条件编译12. 头文件的包含13. 其他预处理指令总结:。前言:本篇介绍c/c+......
  • C++模版简单认识与使用
    目录前言:1.泛型编程2.函数模版3.类模版为什么要有类模版?使用typedef不行吗?类模版只能显示实例化:注意类名与类型的区别:注意类模版最好不要声明和定义分离:总结:前言:正如标题而言,这里只是对模版的简单认识与使用,方便后面博客介绍stl中一些容器的实现,更复杂详细的模版......
  • QT和C++排列组合
    界面比较简洁,如有需要请大家自行完善!!!头文件#pragmaonce#include<QtWidgets/QMainWindow>#include"ui_text.h"classtext:publicQMainWindow{  Q_OBJECTpublic:  text(QWidget*parent=nullptr);  ~text();  voidParseStringToVector(con......
  • 题解:AT_xmascon21_b Bad Mood
    AT_xmascon21_bBadMood题意给定你一个\(n\timesm\)的矩形。以一条对角线为基础上,制作一个无向图,该图的顶点对应于格子的共有\((m+1)\times(n+1)\)个顶点,画上的对角线对应于图的边。这种方式能形成的连通分量的数量为得分。求最小得分和最大得分。思路最小得分是好......
  • 深入理解C++ lambda表达式:用法、特性与最佳实践
    文章目录一、引言1、lambda表达式的概念2、lambda表达式在C++中的重要作用3、lambda表达式的基本语法结构二、lambda表达式的核心特性1、捕获列表2、参数列表3、返回类型4、函数体5、multable关键字三、lambda表达式的进阶用法1、lambda表达式与STL算法的结合使用2、la......
  • C++11中auto与decltype的区别与联系深入解析
    文章目录一、引言二、auto关键字及其特性1、auto的基本定义与用途2、auto在类型推导中的应用3、auto的局限性及需要注意的问题三、decltype关键字及其特性1、decltype的基本定义与用途2、decltype在类型推导中的应用3、decltype的局限性及需要注意的问题四、auto与decl......
  • C++从入门到精通——类和对象(上篇)
    1.面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。2.类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量......
  • 20211325高进涛加密API研究
    密码引擎-加密API研究 Content任务详情0.研究学习原始文档CryptoAPIPKCS#11GM/T0016-2012智能密码钥匙密码应用接口规范GM/T0018-2012密码设备应用接口规范1.总结这些API在编程中的使用方式CryptoAPIPKCS#11SKF2.列出这些API包含的函数,进行分类,并总结它......