随笔分类 -  <六>:C++关于 STL

STL基础
摘要:关联容器 无序关联容器->链式哈希表 增删查 O(1) set:集合key map:映射表[key,value] unordered_set 单重集合 不允许重复 unordered_multiset 多重集合 unordered_map 单重映射表 unordered_multimap 多重映射表 阅读全文
posted @ 2022-12-16 08:15 Hello_Bugs 阅读(58) 评论(0) 推荐(0) 编辑
摘要:函数对象 =》C语言中的函数指针 函数对象 尽管函数指针被广泛用于实现函数回调,但C++还提供了一个重要的实现回调函数的方法,那就是函数对象。函数对象(也称“函数符”)是重载了“()”操作符的普通类对象。因此从语法上讲,函数对象与普通的函数行为类似。 用函数对象代替函数指针有几个优点: 首先,因为对 阅读全文
posted @ 2022-12-15 22:20 Hello_Bugs 阅读(80) 评论(0) 推荐(0) 编辑
摘要:标准容器->容器适配器 什么叫适配器? 1:适配器底层没有自己的数据结构,它是另外一个容器的封装,它的方法, 全部由底层依赖的容器进行实现的.像标准库中的stack 如下图 2:没有实现自己的迭代器 容器适配器 stack,queue,priotity_queue 没有迭代器 stacks1; 栈, 阅读全文
posted @ 2022-12-15 19:07 Hello_Bugs 阅读(130) 评论(0) 推荐(0) 编辑
摘要:泛型算法 头文件 包含了C++ STL里面的泛型算法 泛型算法=》template + 迭代器 + 函数对象 sort, find , find_if , binary_search , for_each 泛型算法特点 1:泛型算法的参数接收的都是迭代器(迭代器保证了接口统一) 2:泛型算法的参数还 阅读全文
posted @ 2022-12-15 17:20 Hello_Bugs 阅读(35) 评论(0) 推荐(0) 编辑
摘要:无序关联容器 #include <unordered_set> #include <unordered_map> 有序关联容器 => 底层是红黑树结构 #include<set> #include<map> set<int> set1 ;//不允许重复 for(int i=0;i<100;i++){ 阅读全文
posted @ 2022-12-15 16:31 Hello_Bugs 阅读(33) 评论(0) 推荐(0) 编辑
摘要:容器迭代器 Vector vec; for(int i=0;i<100;i++){ vec.push_back(i); } const_iterator 常量迭代器 (基类) iterator 普通迭代器 (子类) iterator 是继承自const_iterator的 class const_i 阅读全文
posted @ 2022-12-15 09:57 Hello_Bugs 阅读(26) 评论(0) 推荐(0) 编辑
摘要:vector和deque之间的区别? vector:底层动态数组,内存连续,二倍方式扩容 vector vec;默认是没有开辟空间的, 0->1->2->4->8->16 可以用reserve(20) 只开辟空间,没有放置元素 deque:动态开辟的二维数组空间,第二维是固定长度的空间,扩容的时候, 阅读全文
posted @ 2022-12-15 09:43 Hello_Bugs 阅读(142) 评论(0) 推荐(0) 编辑
摘要:deque:双端队列容器(队头队尾都可入,出) 底层数据结构情况 动态开辟的二维数组,一维数组从2开始,以2倍方式进行扩容,每次扩容后,原来第二维数组 从新的第一维数组的下标oldsize/2 开始存储 如下列图序 满了扩容,扩容第1维,2倍扩 deque deq; 增加: deq.push_bac 阅读全文
posted @ 2022-12-14 19:30 Hello_Bugs 阅读(106) 评论(0) 推荐(0) 编辑
摘要:STL (standard template libaray - 标准模板库):是 C++ 标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。 通俗来说:STL就是将常见的数据结构(例如 顺序表,链表,栈,队列,二叉树,哈希...)以模板的形式进行封装,使用时, 阅读全文
posted @ 2022-12-14 17:59 Hello_Bugs 阅读(104) 评论(0) 推荐(0) 编辑
摘要:底层数据结构:动态开辟的数组,每次以原始空间2倍扩容 vector vec; 增加 vec.push_back(100);容器末尾加元素 时间负责度O(1) 可能导致容器扩容 容器中的,对象的构造析构,内存的开辟释放,通过什么来实现? 容器的空间配置器allocator allocate deall 阅读全文
posted @ 2022-12-14 14:14 Hello_Bugs 阅读(60) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示