建设银行官网首页网站公告/天津百度网站排名优化

建设银行官网首页网站公告,天津百度网站排名优化,网站发多少篇文章开始做外链,武汉微信小程序开发一、了解 1、unordered_map(哈希) unordered_map是借用哈希表实现的关联容器。 访问键值对O(1),最坏情况O(n),例如哈希冲突严重时。【n是一个哈希桶的元素数量】 unordered_map特性 键值对存储&#xff…

一、了解

1、unordered_map(哈希)

unordered_map是借用哈希表实现的关联容器。

  • 访问键值对O(1),最坏情况O(n),例如哈希冲突严重时。【n是一个哈希桶的元素数量

  • unordered_map特性

    • 键值对存储:(key-value)每一个键对应一个值
    • 无序:元素顺序取决于哈希函数和元素添加顺序
    • 哈希表表现:哈希表实现。键用哈希函数生成对应的索引。
    • 自定义哈希函数和相等函数:可以自己定义函数。
  • unordered_map 性能

    • 哈希冲突解决方法:链表或其他数据结构解决冲突。

    • 如下图:
      在这里插入图片描述
      在这里插入图片描述

    • 负载因子和重哈希

      • 负载因子:已存储元素数量 / 桶的总数量。。【一般为 1 】触发哈希表扩容(rehash)。
      • 重哈希:当加载因子超过要求,就要重新分配元素并增加哈希桶数量。以保持高效性。
    • 内存开销:哈希表需要额外内存管理桶,可能比红黑树占用更多总内存

  • 使用的头文件
#include <unordered_map>

二、初始化

unordered_map<KeyType, ValueType> myMap;
键类型 KeyType:必须支持 < 运算符,或传入自定义比较函数。
值类型 ValueType:任意类型(包括自定义类型)。

int main(){pair<int,int>pair1={1,2};pair<int,int>pair2=make_pair(1,2);unordered_map<int ,int>unorderedmap1={{1,2},{1,2}};unordered_map<int ,int>unorderedmap2={pair1,pair2};unordered_map<int ,int>unorderedmap3(unorderedmap2);unordered_map<int ,int>unorderedmap4=unorderedmap3;unordered_map<int ,int>unorderedmap5{pair<int,int>(1,2)};
}

三、自定义哈希函数

  • 首先了解
  • 负载因子(load factor):已存储元素数量 / 桶的总数量。
    • 默认当负载因子超过 max_load_factor()(通常为 1.0)时触发哈希表扩容(rehash)。
  • 调整桶的数量方法 ,如下:
scores.rehash(50);      // 预分配至少容纳 50 个元素的桶
scores.reserve(100);    // 预分配至少 100 个元素的容量(更友好)
  • 手动设置哈希函数 , 例如:
// 示例:自定义类的哈希函数
struct Person {string name;int id;
};// 定义哈希函数
struct PersonHash {size_t operator()(const Person& p) const {return hash<string>()(p.name) ^ hash<int>()(p.id);}
};// 定义相等比较
struct PersonEqual {bool operator()(const Person& a, const Person& b) const {return a.name == b.name && a.id == b.id;}
};// 使用自定义类型的 unordered_map
unordered_map<Person, int, PersonHash, PersonEqual> customMap;

四、常用函数

1、总结

在这里插入图片描述

2、例子

  • 首先是这里用的头文件
#include <iostream>
#include<unordered_map>
#include <utility>
using namespace std;

2.1、插入操作

  • insert({key-value})
    • 插入键值
int main(){unordered_map<int,int>m;m.insert({1,2});for(auto i:m){cout<<i.first<<" "<<i.second<<" "<<endl;//1 2}
}
  • insert(pair)
    • 插入pair
int main(){pair<int,int>p={1,2};unordered_map<int,int>m;m.insert(p);for(auto i:m){cout<<i.first<<" "<<i.second<<" "<<endl;//1 2}
}
  • insert(other_unordered_map_first,other_unordered_map_end)
    • 插入另一个哈希map
int main(){unordered_map<int,int>m;unordered_map<int,int>tmp{{2,3},{2,3}};m.insert(tmp.begin(),tmp.end());for(auto i:m){cout<<i.first<<" "<<i.second<<" "<<endl;//2 3}
}
  • inserrt(pos , {key-value})
    • 在pos插入键值
int main(){unordered_map<int,int>m={{1,2}};m.insert(m.begin(),{3,4});for(auto i:m){cout<<i.first<<" "<<i.second<<" "<<endl;//3 4//1 2}
}

2.2、删除操作

  • erase(first , end)
    • 删除当前这个map 在这个范围内的键值对
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};m.erase(m.begin(),++m.begin());for(auto i:m){cout<<i.first<<" "<<i.second<<" "<<endl;//2 3//1 2}
}
  • erase(pos)
    • 删除pos的键值对
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};m.erase(m.begin());for(auto i:m){cout<<i.first<<" "<<i.second<<" "<<endl;//2 3//1 2}
}

2.3、访问操作

  • [key]运算符
    • 查key对应的值
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};cout<<m[1]<<endl;//2}
  • at(key)
  • 查key对应的值
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};cout<<m.at(1)<<endl;//2}
  • begin()
    • 返回第一个
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};cout<<m.begin()->first<<endl;//3cout<<m.begin()->second<<endl;//4
}
  • end()
    • 返回最后一个
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};cout<<m.end()->first<<endl;//cout<<m.end()->second<<endl;//
}

2.4、查询操作

  • find(key)
    • 找key键值的位置
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};auto i =m.find(1);cout<<i->first<<endl; //1cout<<i->second<<endl;//2
}
  • count(key)
    • 找key的键值数量
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};auto i =m.count(1);cout<<i<<endl; //1}

2.5、容量操作

  • size()
    • 查找map的数量
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};int num = m.size();cout<<num<<endl; //3}
  • empty
    • 当前map是否为空
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};if(m.empty()==1){cout<<"m是空的"<<endl;}else{cout<<"m不是空的"<<endl;}//m不是空的}

2.6、交换操作

  • swap(other_unordered_map)
    • 交换2个map
int main(){unordered_map<int,int>m={{1,2},{2,3},{3,4}};unordered_map<int,int>s={{3,4}};m.swap(s);for(auto i:m){cout<<i.first<<" "<<i.second<<" "<<endl;//3 4}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 头文件说明

如果一个程序足够大&#xff0c;代码功能很多&#xff0c;可以想象&#xff0c;不可能把代码写在一个cpp文件里。我们需要模块化&#xff0c;这样的好处很多&#xff0c;方便分工合作&#xff0c;可读性提高&#xff0c;调用也方便。 这个要怎么做呢&#xff1f; 很简单直接当…

【Linux系统】Linux进程终止的N种方式

Linux系列 文章目录 Linux系列前言一、进程终止的概念二、进程终止的场景三、进程终止的实现3.1 程序退出码3.2 运行完毕结果正常3.3 运行完毕结果异常3.4 程序异常退出 总结 前言 进程终止是操作系统中&#xff0c;进程的一个重要阶段&#xff0c;他标志着进程生命周期的结束…

【工具类】Java的 LocalDate 获取本月第一天和最后一天

博主介绍&#xff1a;✌全网粉丝22W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

嵌入式开发之STM32学习笔记day06

基于STM32F103C8T6的开发实践——从入门到精通01 1. 引言 STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器&#xff0c;广泛应用于嵌入式系统中。STM32F103C8T6是其中非常受欢迎的一款&#xff0c;凭借其强大的性能、丰富的外设接口和低廉的价格…

AutoHub场景演示|带您领略智能自动化操作的全新体验

AutoHub是一款由OpenCSG推出的基于前沿大型语言模型&#xff08;LLM&#xff09;的浏览器自动化工具&#xff0c;旨在通过智能对话交互和自动化技术&#xff0c;帮助用户更高效地浏览网页和完成任务。它不仅能够自动化繁琐的网页操作&#xff0c;还能够为用户提供精准的信息检索…

深入解析 Linux 声卡驱动:从架构到实战

在嵌入式 Linux 设备中&#xff0c;音频功能的实现离不开 Linux 声卡驱动。而 ALSA (Advanced Linux Sound Architecture) 作为 Linux 内核的音频框架&#xff0c;提供了一整套 API 和驱动模型&#xff0c;帮助开发者快速集成音频功能。本篇文章以 WM8960 音频编解码器&#xf…

虚拟地址空间(下)进程地址空间(上)

一.关于页表组成 1.权限&#xff08;rwx) 作用&#xff1a;如1.让代码区变成只读的 2.写时拷贝的实现&#xff1a;子进程创建时其页表指向的父进程代码和数据权限都是只读的&#xff0c;子进程试图修改&#xff0c;触发错误&#xff0c;系统开始写时拷贝。 来源&#xff1a;…

iwebsec-SQL数字型注入

1.判断是否存在漏洞 添加and 11发现正常显示&#xff0c;添加and 12无回显条目&#xff0c;则存在sql注入漏洞 2.因为有回显&#xff0c;尝试union联合注入&#xff0c;使用order by判断出有3个字段 3.使用union联合注入查看回显位&#xff0c;发现3三个字段均有回显&#xff…

蓝桥杯每日五题第一日

蓝桥杯每日5题 问题一 班级活动 1.班级活动 - 蓝桥云课 问题描述 小明的老师准备组织一次班级活动。班上一共有 nn 名 (nn 为偶数) 同学&#xff0c;老师想把所有的同学进行分组&#xff0c;每两名同学一组。为了公平&#xff0c;老师给每名同学随机分配了一个 nn 以内的正…

前端字段名和后端不一致?解锁 JSON 映射的“隐藏规则” !!!

&#x1f680; 前端字段名和后端不一致&#xff1f;解锁 JSON 映射的“隐藏规则” &#x1f31f; 嘿&#xff0c;技术冒险家们&#xff01;&#x1f44b; 今天我们要聊一个开发中常见的“坑”&#xff1a;前端传来的 JSON 参数字段名和后端对象字段名不一致&#xff0c;会发生…

【Linux】Bash是什么?怎么使用?

李升伟 整理 什么是 Bash&#xff1f; Bash&#xff08;Bourne Again Shell&#xff09;是一种 命令行解释器&#xff08;Shell&#xff09;&#xff0c;广泛用于 Unix 和 Linux 操作系统。它是 Bourne Shell&#xff08;sh&#xff09; 的增强版&#xff0c;提供了更多的功能…

Qt Creator入门

1.创建项目 选择创建项目-Application&#xff08;Qt&#xff09;-Qt Widgets Application-修改名称即可 默认创建有窗口类&#xff0c;myWidget,基类有三种选择&#xff1a;QWidget&#xff0c;QMainWindow&#xff0c;QDialog 注意&#xff1a; 名称和创建路径不能有中文、…

咖啡点单小程序毕业设计(JAVA+SpringBoot+微信小程序+完整源码+论文)

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着社会的快速发展和…

003-掌控命令行-CLI11-C++开源库108杰

首选的现代C风格命令行参数解析器! &#xff08;本课程包含两段教学视频。&#xff09; 以文件对象监控程序为实例&#xff0c;五分钟实现从命令行读入多个监控目标路径&#xff1b;区分两大时机&#xff0c;学习 CLI11 构建与解析参数两大场景下的异常处理&#xff1b;区分三…

谱分析方法

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 ima 知识库 知识库广场搜索&#…

【软考-架构】11.3、设计模式-新

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 项目中的应用设计模式创建型设计模式结构型设计模式行为型设计模式 &#x1f4af;考试真题题外话 项目中的应用 在实际项目中&#xff0c;我应用过多种设计模式来解决不同…

Linux的Shell编程

一、什么是Shell 1、为什么要学习Shell Linux运维工程师在进行服务器集群管理时&#xff0c;需要编写Shell程序来进行服务器管理。 对于JavaEE和Python程序员来说&#xff0c;工作的需要。Boss会要求你编写一些Shell脚本进行程序或者是服务器的维护&#xff0c;比如编写一个…

论文阅读笔记:Deep Unsupervised Learning using Nonequilibrium Thermodynamics

1、来源 论文连接1&#xff1a;http://ganguli-gang.stanford.edu/pdf/DeepUnsupDiffusion.pdf 论文连接2(带appendix)&#xff1a;https://arxiv.org/pdf/1503.03585v7 代码链接&#xff1a;https://github.com/Sohl-Dickstein/Diffusion-Probabilistic-Models 代码的环境配置…

Linux 查看及测试网络命令

使用 ifconfig 命令查看网络接口地址 查看指定的网络接口信息 执行 ifconfig ens33 命令可以只查看网卡 ens33 的配置信息

ABAP语言的动态编程(4) - 综合案例:管理费用明细表

本篇来实现一个综合案例&#xff1a;管理费用明细表。报表在实际项目中&#xff0c;也有一定的参考意义&#xff0c;一方面展示类似的报表&#xff0c;比如管理费用、研发费用等费用的明细&#xff0c;使用业务比较习惯的展示格式&#xff1b;另一方面正好综合运用前面学习的动…