首页 > 编程语言 >C++数据结构底层实现算法

C++数据结构底层实现算法

时间:2024-07-08 19:31:42浏览次数:15  
标签:黑树 hash 重复 C++ 算法 vector 数据结构 底层

1.vector 底层数据结构为数组 ,支持快速随机访问

2.list 底层数据结构为双向链表,支持快速增删

3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问

deque是一个双端队列(double-ended queue),也是在堆中保存内容的.每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品.

4.stack 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时

5.queue 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时

(stack和queue其实是适配器,而不叫容器,因为是对容器的再封装)

6.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现

7.set 底层数据结构为红黑树,有序,不重复

8.multiset 底层数据结构为红黑树,有序,可重复

9.map 底层数据结构为红黑树,有序,不重复

10.multimap 底层数据结构为红黑树,有序,可重复

11.hash_set 底层数据结构为hash表,无序,不重复

12.hash_multiset 底层数据结构为hash表,无序,可重复

13.hash_map 底层数据结构为hash表,无序,不重复

14.hash_multimap 底层数据结构为hash表,无序,可重复

标签:黑树,hash,重复,C++,算法,vector,数据结构,底层
From: https://www.cnblogs.com/zdwzdwzdw/p/18290587

相关文章

  • 路径规划算法(1)
    传统路径规划算法      1、BUG避障算法Bug算法大概是人们能想象到的最简单的避障算法。其基本思想是机器人在路途中,跟踪各障碍物的轮廓,从而绕开它。BUG算法十分简单,就像虫子在黑盒中的移动一样,这种规划没有全局路径规划,只有局部路径规划。根据规则的不同分为BUG0,BU......
  • 【算法篇】KMP算法,一种高效的字符串匹配算法
    我们今天了解一个字符串匹配算法-KMP算法,内容难度相对来说较高,建议先收藏再细品!!!KMP算法的基本概念KMP算法是一种高效的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。该算法的主要使用场景就是在字符串(也叫主......
  • C++ 入门02:控制结构和循环
    往期回顾:C++入门01:初识C++一、前言在上一篇文章学习中,我们了解了C++程序的基本结构、注释、数据类型、变量以及输入输出的基本用法。这一篇,我们将继续深入学习C++的控制结构和循环。二、控制结构和循环2.1、条件语句条件语句是编程中非常重要的一部分,它们允许......
  • 01day C++初入学习
    这里写目录标题1.C++区别于C的输入输出2.什么是命名空间3.namespace的定义namespace的使用(1)namespace嵌套使用(2)多⽂件中可以定义同名namespace(3)4.命名空间的使用5.C++输⼊&输出6.缺省参数7.函数重载8.引用8.1引用的特性8.3引用的使用1.C++区别于C的输入输出......
  • Studying-代码随想录训练营day31| 56.合并区间、738.单调递增的数字、968.监控二叉树
    第31天,贪心最后一节(ง•_•)ง......
  • KMP算法实例——模式匹配
    题目描述:给定两个字符串,一个是文本串txt,另一个是模式串pat。请使用KMP算法找出模式串在文本串中的所有出现位置。示例输入:文本串 txt:"ABABDABACDABABCABAB"模式串 pat:"ABABCABAB"#include<stdio.h>#include<string.h>//计算模式串的最长公共前后缀数组voidco......
  • ACM/ICPC算法基础训练教程(2)
    关于《ACM/ICPC算法基础训练教程》这本书的一些解释与自我理解1.2枚举法1.2.1基本概念1.2.2例题讲解1.2枚举法1.2.1基本概念在某些问题中,问题的解被限制在一个有限的范围内,此类问题只需要按照题目的限定,逐一判断这些可能的解是否符合题目的要求,这种方法称为枚......
  • 代码随想录算法训练营第五天|LeetCode242.有效的字母异位词 LeetCode 349. 两个数组的
    代码随想录算法训练营Day5代码随想录|LeetCode242.有效的字母异位词LeetCode349.两个数组的交集LeetCode202.快乐数LeetCode1.两数之和文章目录代码随想录算法训练营前言代码随想录原文--哈希表今天的内容真的很有挑战o(╥﹏╥)o,做了很久一、哈希表基础理论1......
  • C++ string基础用法
    基本操作构造与初始化默认构造:创建一个空字符串 std::strings;从C风格字符串构造:std::strings="Hello";从范围构造:std::strings(begin,end);从迭代器构造:std::strings(it_begin,it_end);从字符数组构造:std::strings(arr,arr+size);从重复字符构造:std::stri......
  • 代码随想录算法训联营第四天|LeetCode24. 两两交换链表中的节点 LeetCode19.删除链表
    系列文章目录代码随想录算法训练营第四天:代码随想录|LeetCode24.两两交换链表中的节点LeetCode19.删除链表的倒数第N个节点面试题02.07.链表相交LeetC142.环形链表文章目录系列文章目录前言一、LeetCode24.两两交换链表中的节点1、题目链接2、题解二、LeetCod......