• 2024-07-03关于自定义unordered_set\unordered_map中Hash和KeyEqual:函数对象和lambda表达式简单应用
    以unordered_set为例,首先在cppreference中查看其模板定义:可以看到Hash类默认是std::hash<Key,KeyEqual类似,本文将Hash以函数对象写出,将KeyEqual以lambda写出。classhashvec{ public: size_toperator()(constvector<int>&vec)const{ returnhash<int>()(vec[0])+hash
  • 2024-06-23C++ 关联容器使用 map, unordered_map, set, unordered_set, multiset, unordered_multiset
    关联容器是否有序是否关联值是否可重复访问时间set是否否对数map是是否对数multiset是否是对数multimap是是是对数unordered_map否是否常数unordered_set否否否常数unordered_multiset否否是常数unordered_multimap否是是常数#include<map>#include<set>#includ
  • 2024-06-146.14 哈希表
    采用邻接表创建无向图G,依次输出各顶点的度。输入格式:输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数。输入第二行为顶点的信息,每个顶点只能用一个字符表示。依次输入j行,每行输入一条边依附的顶点。输出格式:依次输出各顶点的度,行末没有最后的空格。输入
  • 2024-06-12代码随想录第6天 | ●哈希表理论基础●242.有效的字母异位词●349. 两个数组的交集●202. 快乐数●1. 两数之和
    题目:242.有效的字母异位词思路:1.ASCII和哈希函数,存入数组,比较数组相等否2.首先选择数据结构,题目只有小写字母,ASCII连续,选用数组,一个字符串遍历,在哈希数组中存入字母出现频率,第二个字符串遍历,做减法。(不需要记ASCII,直接减字母,编译器自己算)时间复杂度:O(n)空间复杂度:O(1)坑
  • 2024-06-09哈希桶封装unordered_map、unordered_set
    哈希桶源代码我们将由下列的哈希桶来模拟封装STL库中的unordered_map和unordered_set注意:为了实现封装unordered_map和unordered_set,我们需要对下列源码进行优化。//哈希桶namespacehashbucket{template<classK,classV>structHashNode{HashNo
  • 2024-06-07C++数据结构之:哈希表Hash
    摘要:  it人员无论是使用哪种高级语言开发东东,想要更高效有层次的开发程序的话都躲不开三件套:数据结构,算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储
  • 2024-06-01C++常用STL容器
    备注:文中图片来自hackingcpp.vectorvector是C++中最常用的容器,它可以动态改变自身大小。dequelist(双向链表)forward_list(单向链表)unordered_setsetunordered_mapmap
  • 2024-05-30hashtable的常用方法
    哈希表的定义和查找方法就不再赘述,此随笔主要写代码中的用法加深自己印象。声明哈希表:#include<unordered_map>unordered_map<eleType_1,eleType_2>var_name;unordered_map<int,int>map;//或者之前用过的charint类型,char为key,int为char的值。后面的变量为两个unordered
  • 2024-05-29P3-P6容器之分类与各种测试
    序列容器 关联式容器 这里讲到的哈希碰撞,是两个元素的存放位置冲突,用链表进行处理;同时hashtable的链表不能太长 以下测试程序之辅助函数 一、序列容器arrayvectorvector容量是两倍增长,当添加元素之后,容量不够,会去内存中找两倍的空间,将之前的元素放入存放。127
  • 2024-05-25C++容器之无序集(std::unordered_set)
    目录1概述2使用实例3接口使用3.1construct3.2assigns3.3iterators3.4capacity3.5find3.6count3.7equal_range3.8emplace3.9emplace_hint3.10insert3.11erase3.12clear3.13swap3.14bucket_count3.15max_bucket_count3.16bucket_s
  • 2024-04-10unordered_map在计算最大长度的无重复字符子串的作用总结
    例如:abcadfee计算结果为3,即abc或adf这里定义一个unordered_map<char,int>的哈希表,键为字符,值为该字符的下标intleft=0,len=0;for(inti=0;i<s.length();i++){charc=str[i];if(hash.count(c)){len=max(len,i-left);//计算最大长度left=max(left,hash[c]+1);//就算左指针
  • 2024-04-09两个链表的交集(力扣349)
    题目如下:给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。示例1:输入:nums1=[1,2,2,1],nums2=[2,2]输出:[2]示例2:输入:nums1=[4,9,5],nums2=[9,4,9,8,4]输出:[9,4]解释:[4
  • 2024-04-09洛谷题单指南-数学基础问题-P3913 车的攻击
    原题链接:https://www.luogu.com.cn/problem/P3913题意解读:车所在的行、列一共有多个个格子。解题思路:假设3*3的棋盘,有三个车分析得知,三个车覆盖了第1、2两行,第2、3两列,覆盖的格子数用公式计算就是2*3+2*3-2*2=8也就是两行格子数加两列格子数再减去交叉点。因此
  • 2024-04-08unordered_map的理解和应用
    1、介绍unordered_map,它是一个关联容器,内部采用的是hash表结构,拥有快速检索的功能。1.1、特性关联性:通过key去检索value,而不是通过绝对地址(和顺序容器不同)无序性:使用hash表存储,内部无序Map:每个值对应一个键值键唯一性:不存在两个元素的键一样动态内存管理:使用内存管理
  • 2024-04-05LeetCode 13. 罗马数字转整数
    解题思路通过样例我们可以知道,将目标对应值和下一个目标对应值进行比较,如果小于,则sum=sum+目标对应值,如果大于,则sum=sum-目标对应值。最终的sum就是正确答案。相关代码classSolution{public:intromanToInt(strings){unordered_map<char,int>a;
  • 2024-04-01记录一次使用unordered_set插入数据异常的问题
    问题描述问题和unordered_set有关,相关代码如下://打印unordered_set的所有值voidprintSet(conststd::unordered_set<std::string>&data){intindex=0;autoit=data.begin();for(;it!=data.end();++it){conststd::string&key=*i
  • 2024-03-31unordered_map
    \(unordered\_map\)的\(hash\)函数固定易被卡,于是采用自定义随机哈希函数\(custom\_hash\)。structcustom_hash{staticuint64_tsplitmix64(uint64_tx){x+=0x9e3779b97f4a7c15;x=(x^(x>>30))*0xbf58476d1ce4e5b9;x=(x^(x
  • 2024-03-26字符串中的第一个唯一字符
    题目:给定一个字符串s,找到它的第一个不重复的字符,返回它的索引 。如果不存在,则返回-1。代码:classSolution{public:intfirstUniqChar(strings){intsize=s.size();intindex=-1;//用unordered_map集合存取键值对unorder
  • 2024-03-21C++标准库容器选择
    C++标准库提供了多种容器,每种容器都有其自身的特点和适用场景。以下是C++标准库中常用的容器以及它们的特点:std::vector:动态数组,支持随机访问,适用于需要快速随机访问元素的场景。std::list:双向链表,支持快速插入和删除操作,适用于需要频繁插入和删除元素的场景。std::deque
  • 2024-03-18【STL】 C++常用容器介绍系列(一)----(map、set、stack)
    目录一、map系列1、map介绍2、unordered_map介绍3、map和unordered_map的选择二、set系列1、set介绍2、unordered_set介绍3、set和unordered_set的选择三、如何遍历和查询map和set1、map的遍历2、map的查询3、set的遍历4、set的查询四、stack介绍和操作stack的方
  • 2024-03-12第七天
    c++打卡一、哈希表理论哈希表用途:快速判断一个元素是否在集合里定义:哈希表是根据关键码的值而直接进行访问的数据结构好处:枚举的时间复杂度为O(n),而使用哈希表,时间复杂度为O(1)三种哈希结构:数组、集合set、映射map使用场景:集合:unordered_set查询、增删快,且不重复,set有
  • 2024-03-03【C++ STL容器set 】std::set 的全方位解析
    装载自知乎(虽然有AI辅助操作,但是确实写得好好):【C++STL容器set】std::set的全方位解析-知乎(zhihu.com)<imgsrc="https://pic3.zhimg.com/v2-cc8068b8931c7f65e9a89717e2ab404e_b.jpg"data-size="normal"data-rawwidth="1024"data-rawheight="1024
  • 2024-03-01【STL和泛型编程】4. hashtable、unordered_set、unordered_map
    1.hashtable前置知识:【数据结构】3.跳表和散列 基本原理:将Key计算成一个数值,然后取余数得到它在表头中的位置table(篮子)里每个指针都指向一个链表(桶)来存储余数相同的值如果桶内的元素个数比篮子个数还多,则将篮子的大小扩充篮子是vector,数量是质数,初始为53,53扩充后为97
  • 2024-02-27STL-unordered_map,unordered_set模拟实现
    unordered_set#pragmaonce#include"28hashtable_container.h"namespacetest{//template<//classKey,//unordered_set::key_type/value_type//classHash=hash<Key>,//unordered_s
  • 2024-02-27STL-unordered_hashtable模拟实现
    #pragmaonce#include<vector>#include<string>#include<iostream>usingstd::cout;usingstd::endl;usingstd::pair;usingstd::make_pair;namespaceHashBucket{template<classT>structHashNode{HashNode