STL常用函数
STL函数
unorder_map容器必知必会攻略🐘
挂上map的学习笔记 Post not found: 学习笔记/STL/STL之map
unordered_map 容器,直译过来就是”无序 map 容器”的意思。所谓“无序”,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。
对于已经学过 map 容器的读者,可以将 unordered_map 容器等价为无序的 map 容器。
具体来讲,unordered_map 容器和 map 容器一样,以键值对(pair类型)的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。但由于 unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。
值得一提的是,unordered_map 容器在<unordered_map>头文件中,并位于 std 命名空间中。因此,如果想使用该容器,代码中应包含 ...
STL基本概念
STL的一些基本方法和常识
deque容器必知必会攻略🐋
deque容器的详细使用攻略
unorder_map容器必知必会攻略🐘
点击加速到unorder_mapPost not found: 学习笔记/STL/STL之unorder_map
🐘mapmap 由红黑树实现,其元素都是 “键值/实值” 所形成的一个对组(key/value pairs)。每个元素有一个键,是排序准则的基础。每一个键只能出现一次,不允许重复。
map 主要用于资料一对一映射的情况,map 内部自建一颗红黑树,这颗树具有对数据自动排序的功能,所以在 map 内部所有的数据都是有序的。比如一个班级中,每个学生的学号跟他的姓名就存在着一对一映射的关系。
特点
自动建立 Key - value 的对应。key 和 value 可以是任意你需要的类型。
根据 key 值快速查找记录,查找的复杂度基本是 O(logN),如果有 1000 个记录,二分查找最多查找 10次(1024)。
增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。
对于迭代器来说,可以修改实值,而不能修改 key。
优缺点和适用场景
优点:使用平衡二叉树实现,便于元素查找,且能把一个值映射成另一个值,可以创建字典。
缺点:每次插入值 ...
set容器必知必会攻略🐢
set 容器定义于<set>头文件,并位于 std 命名空间中。如果想在程序中使用 set 容器,该程序代码应先包含如下语句:
12#include <set>using namespace std;
set 容器的类模板定义如下:
12345template < class T, // 键 key 和值 value 的类型 class Compare = less<T>, // 指定 set 容器内部的排序规则 class Alloc = allocator<T> // 指定分配器对象的类型 > class set;
注意,由于 set 容器存储的各个键值对,其键和值完全相同,也就意味着它们的类型相同,因此 set 容器类模板的定义中,仅有第 1 个参数用于设定存储数据的类型。
对于 set 类模板中的 3 个参数,后 2 个参数自带默认值,且几乎所有场景中只需使用前 2 个参数,第 3 ...
迭代(顿开)
正则表达式在很多技术领域(如:自然语言处理,数据存储等),正则表达式可以很方便的提取我们想要的信息,所以正则表达式是一个很重要的知识点!
一,概念正则表达式(Regular Expression)是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。
正则表达式目前被集成到了各种文本编辑器/文本处理工具当中
二、应用场景(1)验证:表单提交时,进行用户名密码的验证。
(2)查找:从大量信息中快速提取指定内容,在一批url中,查找指定url。
(3)替换:将指定格式的文本进行正则匹配查找,找到之后进行特定替换。
三、基本要素(1)字符类
(2)数量限定符
(3)位置限定符
(4)特殊符号
注意:正则表达式基本是与语言无关的,我们可以结合语言/工具与正则表达式进行文本处理
1,字符类
字符
含义
举例
.
匹配任意一个字符
adc.可以匹配abcd或abc6等
[]
匹配括号中的任意一个字符
[abc]d可以匹配ad,bd,cd
-
在[]内表示字符范围
[0-9a-zA-Z]可以匹配任意大写、小写和数字 ...
顿开教育学习笔记
Lambda表达式\{}123456789101112131415161718//求最大值的函数auto pfun=[](int a,int b)->int{ int sum = a + b;};//调用方式cout << pfun(2,3);//第二种调用方式cout << [](int a,int b)->int{ int sum = a + b;}(6,1);//最简单的lamba表达式[]{cout<<"最简单的lambda表达式"<<endl;}();//加()调用
lambda表达式用法:
1. 回调函数
2. [说明符]
1. = 按值传入外部变量 `不能修改` 在内部捕获之后,相当于const修饰 此时就可使用mutable修饰[]\(\)mutable{}
2. & 按引用导入外部变量
1. = 和 & 的区别
2.
...
顿开教育学习笔记
C++中使用正则表达式添加头文件 ==#include==
使用场景:
1. 检测登录账号是否符合格式
2. 提取读取信息中需要的部分
3. 变量名的匹配
1、 regex_match()函数123456789101112#include <iostream>#include <regex>using namespace std;int main(){ string str = "abbb"; regex re(".b*$"); bool result = regex_match(str , re); cout << boolalpha << result << endl; return 0;}
输出 true
2、 regex_search()函数1regex_search("sdasdasffgerdf",regex(".*"));
强制类型转换
1234567891011//强制转换类型static_cast<>();reinterpret_cast<>();//cast关键字const int ease = 81;const char str[20] ="dsjaid";cahr * ps = const_cast<char *>(str); //ps指针就可以修改str的值
父类指针转换为子类对象123456789101112131415void show(Animal *base){ base->cry(); Cat* pc = dynamic_cast<Dog *>(base); if(pc) { pc->catchMouse(); } Dog* pd = dynamic_cast<Cat *>(bash); if(pd) { pd->seeHome(); }}