• 2024-11-20哈希表、map、unordered_map
    目录哈希函数哈希冲突解决哈希冲突的办法1.线性探测再散列2.再哈希法3.链地址法4.建立一个公共溢出区map与unordered_map的区别底层实现原理元素查找效率插入和删除操作效率内存占用情况元素遍历顺序unordered_map:​编辑使用场景哈希表(HashTable,也叫散列表
  • 2024-11-20【数据结构】`unordered_map` 和 `unordered_set` 的底层原理
    unordered_map和unordered_set是C++标准库中的两个容器,它们被广泛应用于需要快速查找的场景中。它们的查找、插入和删除的平均时间复杂度都是O(1),这也是它们的一个重要特性。本文将详细介绍unordered_map和unordered_set的底层原理,帮助计算机专业的小白理解什么是
  • 2024-11-18map、unordered_map、set 和 unordered_set的小介绍
    1.map简介:map是C++STL中的关联容器,存储键值对(key-valuepair),所有元素按键值升序(或自定义排序)存储。主要特性:底层实现:使用红黑树实现,提供了自动排序功能。元素有序:插入元素后,按键值排序。时间复杂度:插入、删除、查找:O(logn)(因为树的深度为O(logn))。内
  • 2024-11-181207. 独一无二的出现次数
    题目自己已经走到了怎么求每个数字的出现次数,但是对判断出现次数是否有重复没有好的思路,自己想到的思路就是两重for循环或者先排序再一重for循环,但是感觉这两种都不够好。于是看了卡哥的讲解,卡哥是用哈希表来判断是否有重复的,此处哈希表用数组来实现,数组下标是某个数字的出现次
  • 2024-11-16穿越数据迷宫:C++哈希表的奇幻旅程
    文章目录前言
  • 2024-11-13杂题选写 2
    Lightswitches*2600tag:暴力枚举,meetinmiddle题目描述有\(n(1\le1000)\)盏灯和\(s(1\les\le30)\)个开关,每个开关能控制一些灯,并改变这些灯的状态。接下来有\(d(1\led\le1000)\)次询问,每次询问给出\(k_i\)盏亮着的灯,询问将所有灯全部熄灭最少需要按几次开关。
  • 2024-11-11set 、multiset、unordered_set 和 map 、multimap、unordered_map
    序列式容器:比如:vector、list、deque、forward_list(C++11)等因为其底层为线性序列的数据结构,里面存储的是元素本身。关联式容器:比如(树形结构的关联式容器):map、set、multimap、multiset等也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key,value>结构的键值对,
  • 2024-11-08【C++篇】无序中的法则:探索 STL之unordered_map 与 unordered_set容器的哈希美学
    文章目录C++`unordered_map`和`unordered_set`容器详解前言第一章:`unordered_map`和`unordered_set`的概念1.1`unordered_map`和`unordered_set`的定义1.2与`map`、`set`的区别第二章:`unordered_map`和`unordered_set`的构造方法2.1`unordered_map`
  • 2024-11-03C++ STL常用容器之set
    文章目录一、集合set二、所需的头文件三、基本访问操作3.1插入元素3.2删除元素3.3查找元素3.4其他函数四、无序集合unordered_set五、multiset六、unordered_multiset七、使用set容器八、map与set的区别一、集合setset称为集合,是一个内部自动有序且不含重复元素
  • 2024-10-3110.31日
    vector:动态数组,允许在尾部高效地添加和删除元素,支持随机访问。非常适合需要频繁访问元素和进行动态扩展的应用场景。list:双向链表,支持快速插入和删除操作,但不支持随机访问。适合于需要频繁插入和删除元素的情况。deque(double-endedqueue):双端队列,可以在两端高效地添加和删除
  • 2024-10-31用哈希表封装myunordered_map和myunordered_set
    在学习这个之前,已经学习过,myunordered_map和myunordered_set的基本用法和哈希表怎么用哈希思想模拟实现;因此为了更深入的了解myunordered_map和myunordered_set与哈希表的内容,我们来自己用哈希表模拟实现myunordered_map和myunordered_set;这种模拟实现和之前模拟实现map与set
  • 2024-10-3010.30日博客
    序列容器vector用途:动态数组,支持随机访问。特性:元素连续存储。插入和删除操作在尾部效率较高,中间操作较慢。常用方法:push_back():在容器末尾添加元素。pop_back():移除容器末尾的元素。at(index):通过索引访问元素。size():返回容器大小。list用途:双向链表,支持高效的插入
  • 2024-10-18一种很新的 map
    众所周知,map很慢,有时候会超时,所以我想到了这种比map快但又能实现map功能的map。因为unordered_map比map快很多,又能实现map的大多数功能,所以我们使用unordered_map代替map。但unordered_map是unordered的,所以在遍历时无法有序地输出,如下:for(unordered_map<in
  • 2024-09-30哈希表和字符串哈希算法
    哈希哈希表(HashTable)是一种数据结构,它可以通过一个哈希函数将键(key)映射到存储位置,从而实现高效的数据查找、插入和删除操作。哈希表的特点是能够在常数时间(O(1))内完成查找和更新,前提是哈希冲突处理得当。哈希表的基本结构数组:哈希表的底层通常是一个数组,数组中的每个元
  • 2024-09-28《 C++ 修炼全景指南:十三 》为什么你的代码不够快?全面掌控 unordered_set 和 unordered_map 的哈希性能飙升魔法
    摘要本文深入探讨了C++标准库中的两大无序容器——unordered_set和unordered_map,从底层实现、核心操作、性能优化、实际应用等多个方面进行了全面分析。首先,文章介绍了这两种容器的基本概念,说明了它们基于哈希表实现的特点,尤其是在查找、插入和删除操作上具备常数时间
  • 2024-09-27华为9.27笔试
    第一题给出员工(\(n\leq100\))和对应的亲属关系,询问能否将其分为两个组合,要求亲属不在同一侧。要求两个组合中第一个数尽量小。一眼并查集,即员工i的亲属属于同一个集合,生成一个集合编号j。记录员工i以及与之互斥的点,用于后续获取员工i互斥的集合编号j。由于要求组合中第一
  • 2024-09-25map & unordered_map
    map#include<bits/stdc++.h>//map的基本操作如下usingnamespacestd;intmain(){//构造函数map<string,int>dict;//下标类型存储的值的类型//插入数据的三种方式dict.insert(pair<string,int>("apple",2));dict.insert(map&
  • 2024-09-25C++: unordered系列关联式容器
    目录1.unordered系列关联式容器1.1unordered_map1.2unordered_set2.哈希概念3.哈希冲突4.闭散列5.开散列博客主页:酷酷学感谢关注!!!正文开始1.unordered系列关联式容器在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到
  • 2024-09-22map&unordered_map<key,value>key使用自定义类的要求
    std::unordered_map的键要求:std::unordered_map是基于哈希表的数据结构。它要求键类型必须支持哈希计算,也就是必须有对应的std::hash函数。另外,键类型还必须支持相等比较(通过operator==)。如果键类型没有定义哈希函数(例如你自定义的Json类型),std::unordered_map就无
  • 2024-09-22Cpp学习 -- <unordered_map>
    参考网站https://www.runoob.com/cplusplus/cpp-libs-unordered_map.html#include<unordered_map>在C++中,<unordered_map>是标准模板库(STL)的一部分,提供了一种基于哈希表的键值对容器。与std::map不同,unordered_map不保证元素的排序,但通常提供更快的查找速度。unord
  • 2024-09-20Hash入门
    unordered_setvoidtest_unordered_set(){ unordered_set<int>us; us.insert(4); us.insert(2); us.insert(1); us.insert(5); us.insert(6); us.insert(2); us.insert(2); //去重 unordered_set<int>::iteratorit=us.begin(); while(it!=us.en
  • 2024-09-19map,unordered_map,multimap,unordered_multimap
    std::map(有序映射)std::unordered_map(无序映射)std::multimap(有序多重映射)std::unordered_multimap(无序多重映射)它们的使用方式和特点略有不同,下面分别介绍这些数据结构及其基本用法。1.std::map(有序映射)std::map是一个有序的键值对容器,键(key)是唯一的,并且按顺序(通常是按升
  • 2024-09-142024.9.13 总结(考 DP)
    (实际上是2024.9.14写的)本来以为是考DS的。()T1题目里给的那个性质可能是来干扰的。异或上右移一位的数,其实就是除了第一位(最左边的),算贡献的时候都要看这一位异或前一位是不是1。于是随便线性DP,状态里记一下当前位填0还是1就行了。DP数组状态的第一维可以不要,省空
  • 2024-09-05【力扣13】罗马数字转整数
    13.罗马数字转整数-力扣(LeetCode)根据前后字母代表数值大小,确定是加上还是减去该值(罗马数字的辨识规则)把字母映射成一个数字:使用哈希表"unordered_map"然后从前往后枚举每一个字符,比较大小,确定加上还是减去这个值classSolution{public:intromanToInt(strings){
  • 2024-09-04【C++从练气到飞升】19---哈希:哈希冲突 | 哈希函数 | 闭散列 | 开散列