当前位置: 首页 > news >正文

C++ set和map系列(关联式容器)的介绍及使用

欢迎来到干货小仓库

"一个好汉三个帮,程序员同样如此"


1.关联式容器

STL中的容器分为两类,序列式容器关联式容器。

序列式容器:例如STL库中的vector、list和deque、forward_list(C++11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。

关联式容器:关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是一个pair<key,value>结构的键值对,在数据检索时比序列式容器效率更高

2.键值对

用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,value表示与key对应的信息。使用场景比如:商场的车辆出入系统,以车牌作为key,入场时间为value,当车辆出入的时候就可以快速的根据车牌查找到对应的入场信息;高铁实名制车票系统,以身份证号做为key,车票信息作为value。

STL中键值对的定义

template <class T1, class T2>
struct pair
{
typedef T1 first_type;
typedef T2 second_type;
T1 first;
T2 second;
pair(): first(T1()), second(T2())
{}
pair(const T1& a, const T2& b): first(a), second(b)
{}
};

3.树形结构的关联式容器

3.1set(去重+排序)

3.1.1介绍

1、set是按照一定次序存储元素的容器.

2. set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。 set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。

3. 在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。

4. set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。

5. set在底层是用二叉搜索树(红黑树)实现的。

注意:

1. map/multimap不同,map/multimap中存储的是真正的键值对<key, value>set中只放value,但在底层实际存放的是由<value, value>构成的键值对。

2. set中插入元素时,只需要插入value即可,不需要构造键值对。

3. set中的元素不可以重复(因此可以使用set进行去重)

4. 使用set的迭代器遍历set中的元素,可以得到有序序列

5. set中的元素默认按照小于来比较

6. set中查找某个元素,时间复杂度为:\log N

7. set中的元素不允许修改(为什么?)

8. set中的底层使用二叉搜索树(红黑树)来实现

3.1.2使用

1.set的模板参数列表

T: set中存放元素的类型,实际在底层存储<value, value>的键值对。

Compareset中元素默认按照小于来比较

Allocset中元素空间的管理方式,使用STL提供的空间配置器管理

2.set的构造
函数声明
功能介绍
set (const Compare& comp = Compare(), const Allocator&  = Allocator() );
构造空的 set
set (InputIterator first, InputIterator last, const
Compare& comp = Compare(), const Allocator& =
Allocator() );
[first, last) 间中的元素构造 set
set ( const set<Key,Compare,Allocator>& x);
set 的拷贝构造
 3.set的迭代器

常用接口

函数声明功能介绍
iterator begin()
返回 set 中起始位置元素的迭代器
iterator end()
返回 set 中最后一个元素后面的迭代器
const_iterator cbegin() const
返回 set 中起始位置元素的 const 迭代器
const_iterator cend() const
返回 set 中最后一个元素后面的 const 迭代器
4.set的容量
函数声明功能介绍
bool empty ( ) const
检测 set 是否为空,空返回 true ,否则返回 true
size_type size() const
返回set中有效元素的个数
5.set的修改操作
函数声明功能介绍
pair<iterator,bool> insert ( const value_type& x )
set 中插入元素 x ,实际插入的是 <x, x> 构成的 键值对,如果插入成功,返回 < 该元素在 set的 位置, true>, 如果插入败,说明 x set 中已经 存在,返回 <x set 中的位置, false>
void erase ( iterator position )
删除 set position 位置上的元素
size_type erase ( const key_type& x )
删除 set 中值为 x 的元素,返回删除的元素的个数
void erase ( iterator first, iterator last )
删除 set [first, last) 区间中的元素
void swap ( set<Key,Compare,Allocator>& st );
交换 set 中的元素
void clear ( )
set 中的元素清空
iterator find ( const key_type& x ) const
返回 set 中值为 x 的元素的位置
size_type count ( const key_type& x ) const
返回 set 中值为 x 的元素的个数
6.set的使用举例
int main()
{// 用数组array中的元素构造setint array[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0, 1, 3, 5, 7, 9, 2, 4,6, 8, 0 };set<int> s(array, array + sizeof(array) / sizeof(int));cout << s.size() << endl;// 正向打印set中的元素,从打印结果中可以看出:set可去重for (auto& e : s)cout << e << " ";cout << endl;// 使用迭代器逆向打印set中的元素for (auto it = s.rbegin(); it != s.rend(); ++it)cout << *it << " ";cout << endl;// set中值为3的元素出现了几次cout << s.count(3) << endl;return 0;
}

3.2map

3.2.1介绍

1. map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元 素。

2. map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值key关联的内容。键值key和值value的类型可能不同,并且在map的内部,keyvalue通过成员类型value_type绑定在一起,为其取别名称为pair: typedef pair<const key, T> value_type;

3. 在内部,map中的元素总是按照键值key进行比较排序的。

4. map中通过键值访问单个元素的速度通常比unordered_map容器慢,但map允许根据顺序对元素进行直接迭代(即对map中的元素进行迭代时,可以得到一个有序的序列)

5. map支持下标访问符,即在[]中放入key,就可以找到与key对应的value

6. map通常被实现为二叉搜索树(更准确的说:平衡二叉搜索树(红黑树))

3.2.2map的使用

1.map的模板参数列表

key: 键值对中key的类型

T 键值对中value的类型

Compare: 比较器的类型,map中的元素是按照key来比较的,缺省情况下按照小于来比较,一般情况下(内置类型元素)该参数不需要传递,如果无法比较时(自定义类型),需要用户自己显式传递比较规则(一般情况下按照函数指针或者仿函数来传递)

Alloc通过空间配置器来申请底层空间,不需要用户传递,除非用户不想使用标准库提供的空间配置器

注意:在使用map时,需要包含头文件。

2.map的构造
函数声明功能介绍
map()
构造一个空的 map
3.map的迭代器

函数声明功能介绍
begin() end()  --->普通迭代器
begin: 首元素的位置, end 最后一个元素的下一个位置
cbegin() cend()  ---->const迭代器
begin end 意义相同,但 cbegin cend 所指向的元素不 能修改
 4.map的容量与访问元素
函数声明功能介绍
bool empty ( ) const
检测 map 中的元素是否为空,是返回 true ,否则返回 false
size_type size() const
返回 map 中有效元素的个数
mapped_type& operator[] (const
key_type& k)
返回去 key 对应的 value

注意:在元素访问时,有一个与 operator[] 类似的操作 at()( 该函数不常用 ) 函数,都是通过key找到与 key 对应的 value 然后返回其引用,不同的是: key 不存在时, operator[] 用默认 value key 构造键值对然后插入,返回该默认 value at() 函数直接抛异常
 5.map中元素的修改
函数声明功能介绍
pair<iterator,bool> insert ( const value_type& x )
map 中插入键值对 x ,注意 x 是一个键值 对,返回值也是键值对: iterator 代表新插入 元素的位置, bool 代表释放插入成功
void erase ( iterator position )
删除 position 位置上的元素
size_type erase ( const key_type& x)
删除键值为 x 的元素
void erase(iterator first, iteratorlast )
删除 [first, last) 区间中的元素
void swap ( map<Key,T,Compare,Allocator>&  mp)
交换两个 map 中的元素
void clear ( )
map 中的元素清空
iterator find ( const key_type& x )
map 中插入 key x 的元素,找到返回该元 素的位置的迭代器,否则返回 end
const_iterator find ( const key_type& x ) const
map 中插入 key x 的元素,找到返回该元 素的位置的 const 迭代器,否则返回 cend
size_type count ( const key_type& x ) const
返回 key x 的键值在 map 中的个数,注意 map key 是唯一的,因此该函数的返回值 要么为 0 ,要么为 1 ,因此也可以用该函数来 检测一个 key 是否在 map
6.map的使用示例
void TestMap()
{map<string, string> m;// 向map中插入元素的方式:// 将键值对<"peach","桃子">插入map中,用pair直接来构造键值对m.insert(pair<string, string>("peach", "桃子"));// 将键值对<"peach","桃子">插入map中,用make_pair函数来构造键值对m.insert(make_pair("banan", "香蕉"));m["apple"] = "苹果";	//operator[]:若对应的key不在,则会插入cout << m.size() << endl;// 用迭代器去遍历map中的元素,可以得到一个按照key排序的序列for (auto& e : m)cout << e.first << "--->" << e.second << endl;cout << endl;// map中的键值对key一定是唯一的,如果key存在将插入失败auto ret = m.insert(make_pair("peach", "桃色"));if (ret.second)cout << "<peach, 桃色>不在map中, 已经插入" << endl;elsecout << "键值为peach的元素已经存在:" << ret.first->first << "--->"<< ret.first->second << " 插入失败" << endl;// 删除key为"apple"的元素m.erase("apple");if (1 == m.count("apple"))cout << "apple还在" << endl;elsecout << "apple被吃了" << endl;
}
【总结】
1. map 中的的元素是键值对
2. map 中的 key 是唯一的,并且不能修改
3. 默认按照小于的方式对 key 进行比较
4. map 中的元素如果用迭代器去遍历,可以得到一个有序的序列
5. map 的底层为平衡搜索树 ( 红黑树 ) ,查找效率比较高(logN)
6. 支持 [] 操作符, operator[] 中实际进行插入查找。

 3.3multiset(排序)

与set的区别:multiset允许存储多个相同的key---->故没有去重的效果。

其他接口与set基本类似,此处就不多介绍了。

3.4multimap

与map的区别:multimap允许插入相同的key(key不是唯一的),因此其不支持operator[]的接口函数。


觉得不错的,可以点赞+收藏咯!!!

谢谢大家的支持

相关文章:

C++ set和map系列(关联式容器)的介绍及使用

欢迎来到干货小仓库 "一个好汉三个帮&#xff0c;程序员同样如此" 1.关联式容器 STL中的容器分为两类&#xff0c;序列式容器和关联式容器。 序列式容器&#xff1a;例如STL库中的vector、list和deque、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&…...

C#与Halcon联合编程

一、加载图片 导入并初始化 using HalconDotNet; ho_Image new HObject();需要在引用中导入 halcondotnet.dll 关联句柄 打开新窗口 //创建一个句柄变量 绑定winform 窗口 HTuple winfowFater this.pictureBox1.Handle; //打开新的窗口 HOperatorSet.SetWindowAttr(&qu…...

5.0.4 VisualStateManager(视觉状态管理器)使用说明

在 WPF 中,VisualStateManager(视觉状态管理器)是用于管理控件在不同状态下的外观变化的核心组件。它通过定义视觉状态(如按钮的默认、悬停、按下状态)和状态过渡动画,使控件在不同交互场景下动态切换样式,而无需重写整个控件模板。以下是其核心用法和示例: 1. 基本概…...

onenet连接微信小程序(mqtt协议)

一、关于mqtt协议 mqtt协议常用于物联网&#xff0c;是一种轻量级的消息推送协议。 其中有三个角色&#xff0c;Publisher设备&#xff08;客户端&#xff09;发布主题到服务器&#xff0c;其他的设备通过订阅主题&#xff0c;获取该主题下的消息&#xff0c;Publisher可以发…...

IT需求规格说明书,IT软件系统需求设计文档(DOC)

1 范围 1.1 系统概述 1.2 文档概述 1.3 术语及缩略语 2 引用文档 3 需求 3.1 要求的状态和方式 3.2 系统能力需求 3.3 系统外部接口需求 3.3.1 管理接口 3.3.2 业务接口 3.4 系统内部接口需求 3.5 系统内部数据需求 3.6 适应性需求 3.7 安全性需求 3.8 保密性需…...

探索 DevExpress:构建卓越应用的得力助手

探索 DevExpress&#xff1a;构建卓越应用的得力助手 在当今竞争激烈的软件开发领域&#xff0c;打造高效、美观且功能强大的应用程序是每个开发者的追求。而 DevExpress 作为一款备受瞩目的开发工具&#xff0c;为开发者们提供了实现这一目标的有力支持。在本专栏博客中&…...

康养休闲旅游住宿服务实训室:构建产教融合新标杆

随着健康中国战略的深入实施与银发经济市场的持续扩张&#xff0c;康养休闲旅游作为融合健康管理、文化体验与休闲度假的复合型产业&#xff0c;正迎来前所未有的发展机遇。北京凯禾瑞华科技有限公司依托其在智慧康养领域的技术积淀与产业洞察&#xff0c;创新推出“康养休闲旅…...

Python 程序设计教程:构建您的第一个计算器类

Python 程序设计教程:构建您的第一个计算器类 1. 引言:为什么要学习类? 面向对象编程 (Object-Oriented Programming, OOP) 是一种强大的编程范式,它通过将数据和操作数据的函数(方法)捆绑在一起来组织和结构化代码 1。类 (Class) 是 OOP 的核心概念,不仅在 Python 中…...

深入浅出理解常见的分布式ID解决方案

分布式ID在构建大规模分布式系统时扮演着至关重要的角色&#xff0c;主要用于确保在分布式环境中数据的唯一性和一致性。以下是分布式ID的几个主要作用&#xff1a; 确保唯一性&#xff1a;在分布式系统中&#xff0c;可能有成千上万个实例同时请求ID。分布式ID生成系统能保证即…...

mac 使用 Docker 安装向量数据库Milvus独立版的保姆级别教程

Milvus 特点&#xff1a;开源的云原生向量数据库&#xff0c;支持多种索引类型和GPU加速&#xff0c;能够在亿级向量规模下实现低延迟高吞吐。具有灵活的部署选项和强大的社区支持。 适用场景&#xff1a;适合处理超大规模数据和高性能需求的应用&#xff0c;如图像搜索、推荐…...

Ubuntu日志文件清空的三种方式

清空Ubuntu日志文件可以通过三种方式&#xff1a; 使用命令行清空日志文件&#xff1a;可以使用以下命令清空特定日志文件&#xff0c;例如清空syslog文件&#xff1a; sudo truncate -s 0 /var/log/syslog使用编辑器清空日志文件&#xff1a;可以使用文本编辑器如Nano或Vi来…...

文章记单词 | 第68篇(六级)

一&#xff0c;单词释义 differentiate&#xff1a;英 [ˌdɪfəˈrenʃieɪt] 美 [ˌdɪfəˈrenʃieɪt] &#xff0c;动词&#xff0c;意为 “区分&#xff1b;辨别&#xff1b;使有差别&#xff1b;使不同&#xff1b;表明… 间的差别&#xff1b;构成… 间差别的原因”。…...

Postman最佳平替, API测试工具Bruno实用教程(一):基础篇

序言 在前文【github星标超3万!Postman最强平替Bruno你用了吗?】中,我们介绍了目前目前Github上广受关注的新锐接口测试工具Bruno,给厌倦了Postman必须在线使用限制的同学提供了一个很好的替代选择。 Bruno的核心优势,官网重点给出了如下几点: 承诺开源和可扩展,并且专…...

LabVIEW 与 NI 硬件(PXI, CompactRIO, DAQ, RF, Vision)的深度研究与未来发展趋势-分析报告

LabVIEW 与 NI 硬件&#xff08;PXI, CompactRIO, DAQ, RF, Vision&#xff09;的深度研究与未来发展趋势 引言 本报告旨在对 National Instruments (NI) 的 LabVIEW 软件平台及其核心硬件产品线&#xff0c;包括 PXI、CompactRIO、DAQ、RF 和 Vision 系列&#xff0c;进行深…...

上海雏鸟科技再赴越南,助力10518架无人机刷新吉尼斯记录

近日&#xff0c;上海雏鸟科技携手深圳大漠大、河南豆丁智能在越南胡志明市&#xff0c;使用10518架无人机刷新了“最多无人机同时起飞”的世界吉尼斯记录。本次无人机灯光秀表演以越南南部解放50周年为背景突出了越南历史与民族文化的主题&#xff0c;是一场融合了技术与艺术的…...

在云环境中部署Redis服务与自建Redis服务有啥不同?

云服务 Redis概述 常见的云服务Redis提供商有&#xff08;阿里云 Redis、华为云 Redis、AWS ElastiCache for Redis等&#xff09;。这些云提供商负责底层基础设施的部署、配置、维护、操作系统的管理、补丁升级、硬件故障处理等大部分繁琐的运维工作。我们只需要通过控制台或…...

C++类对象的隐式类型转换和编译器返回值优化

文章目录 前言1. 隐式类型转换1.1 单参数的隐式类型转换1.2 多参数的隐式类型转换1.3 explicit关键字 2. 编译器的优化2.1 普通构造优化2.2 函数传参优化2.3 函数返回优化 前言 在类与对象的学习过程中&#xff0c;一定会对隐式类型转换这个词不陌生。对于内置类型而言&#x…...

西门子 PLC 串口转网口模块

在工业自动化领域&#xff0c;高效稳定的通信是保障生产顺畅运行的关键。三格电子西门子 PLC 串口转网口模块&#xff0c;型号涵盖 SG-S7-200-ETH、SG-S7-200-ETH (2P)、SG-S7-300-ETH、SG-S7-300-ETH (2P) 网口扩展与协议支持&#xff1a;该系列模块专为西门子 S7-200/300 PL…...

MATLAB制作直方图

一、什么是直方图&#xff1f; 直方图&#xff08;Histogram&#xff09;是一种用于显示数据分布的图形工具。它通过将数据分成若干个区间&#xff0c;统计每个区间内数据的数量或频率&#xff0c;从而形成类似柱状图的形式。它能帮助我们直观了解数据的集中程度、分布形状、离…...

Linux NVIDIA 显卡驱动安装指南(适用于 RHEL/CentOS)

&#x1f4cc; 一、禁用 Nouveau 开源驱动 NVIDIA 闭源驱动与开源的 nouveau 驱动冲突&#xff0c;需先禁用&#xff1a; if [ ! -f /etc/modprobe.d/blacklist-nouveau.conf ]; thenecho -e "blacklist nouveau\noptions nouveau modeset0" | sudo tee /etc/modpr…...

微机控制电液伺服拉扭疲劳试验系统

微机控制电液伺服拉扭疲劳试验系统&#xff0c;主要用于测定金属材料及其构件在正弦波、三角波、方波、梯形波、斜波、程序块波谱状态下进行&#xff1a; 拉压扭复合疲劳&#xff1b; 单纯的扭转疲劳试验&#xff1b; 拉压扭复合疲劳作用下材料的断裂韧性试验&#xff1b; 拉压…...

ElementUI 表格el-table自适应高度设置

el-table表格占满页面剩余的全部高度空间 首先&#xff0c;el-table父节点要使用flex布局和超出隐藏&#xff08;overflow: hidden&#xff09;&#xff0c;设置样式如下&#xff1a; .list{flex: 1;display: flex;flex-direction: column;overflow: hidden; }其次&#xff0…...

深入探索Linux命名管道(FIFO):原理、实践与高级技巧

引言&#xff1a;跨越进程的“文件桥梁” 在Linux的进程间通信&#xff08;IPC&#xff09;机制中&#xff0c;命名管道&#xff08;Named Pipe&#xff0c;FIFO&#xff09; 是一个看似简单却功能强大的工具。它不仅保留了匿名管道的流式数据传输特性&#xff0c;还通过文件系…...

光伏政策“430”“531”安科瑞光储充为新能源提供解决方案有哪些?

简婷 安科瑞电气股份有限公司 上海嘉定 201801 一、政策节点“430”与“531”的含义 2025年分布式光伏行业的两大核心节点——“4月30日”&#xff08;430&#xff09;和“5月31日”&#xff08;531&#xff09;&#xff0c;分别对应《分布式光伏发电开发建设管理办法》实施…...

VScode一直处于循环“正在重新激活终端“问题的解决方法

方法一&#xff1a; 键盘使用 “ctrlshiftp” 调出快捷命令&#xff0c;也可以按F1&#xff0c;并输入“>Python: Clear Cache and Reload Window ”&#xff0c;回车。清除 VSCode 先前的缓存内容&#xff0c;如下图所示。 方法二&#xff1a; 键盘使用 ” ctrl ,"…...

CAN报文逆向工程

在没有DBC文件的情况下解析CAN报文获取物理信息需要逆向工程和系统分析。以下是详细步骤&#xff1a; 1. 数据采集与基础分析 采集原始数据&#xff1a; 使用CAN分析工具&#xff08;如PCAN-Explorer、SavvyCAN或USB-CAN适配器配套软件&#xff09;记录车辆在不同状态下的CAN数…...

文件包含漏洞学习

理论 什么是文件包含漏洞 就是允许攻击者包含并执行非预期的文件。也就是通过PHP函数引入文件时&#xff0c;传入的文件名&#xff08;或者文件内容&#xff09;没有经过合理的验证&#xff0c;从而操作了预想之外的文件&#xff0c;就可能导致意外的文件泄漏甚至恶意代码注入…...

Linux基本操作——网络操作文件下载

6.网络操作文件下载 &#xff08;1&#xff09;在VMware Workstation中配置固定IP 配置固定IP需要的两个大步骤 VMware Workstation中的配置 步骤概述&#xff1a;配置IP地址、网关和网段&#xff08;IP地址范围&#xff09; Linux系统中的配置 步骤概述&#xff1a;手动修改…...

【ARM AMBA AHB 入门 3.1 -- AHB控制信号】

文章目录 AHB控制信号传送状态HTRANS[1:0]批量传送HBURST[2:0]传送方向HWRITE传送大小HSIZE[2:0]保护控制HPROT[3:0]响应信号 HRESP[1:0] AHB控制信号 传送状态HTRANS[1:0] 在AHB总线上, Master &#xff08;M&#xff09; 的传送状态可由HTRANS[1:0]来表示,这两位所代表的意…...

Amazing晶焱科技:系统级 EOS 测试方法 - System Level EOS Testing Method

系统上常见的EOS测试端口以AC电源、电话线&#xff08;RJ11&#xff09;、同轴电缆&#xff08;coaxial cable&#xff09;以及以太网络&#xff08;RJ45&#xff09;最常见&#xff0c;这些端口因有机会布线至户外的关系&#xff0c;受到EOS/Surge冲击的几率也大大提升。因此电…...

基于DR模式的LVS集群案例

一.环境描述 如上图所示&#xff0c;后端是一个NFS服务器实现共享文件&#xff0c;调度器是一个高可用的环境&#xff0c; 这是基于LVS的DR模式实现的一个负载均衡集群。 keepalived在于LVS结合使用的时候&#xff0c;会自动实现很多功能。 比如&#xff0c;第一点我们可以修…...

Spark jdbc写入崖山等国产数据库失败问题

随着互联网、信息产业的大发展、以及地缘政治的变化,网络安全风险日益增长,网络安全关乎国家安全。因此很多的企业,开始了国产替代的脚步,从服务器芯片,操作系统,到数据库,中间件,逐步实现信息技术自主可控,规避外部技术制裁和风险。 就数据库而言,目前很多的国产数据…...

Chain-of-Draft (CoD) 是提示工程的新王者

图像由 DALLE 3 生成 推理型大模型&#xff0c;是当前 AI 研究的热门话题。 我们从最早的 GPT-1 一路走到现在像 Grok-3 这样的高级推理模型。 这段旅程可以说非常精彩&#xff0c;过程中也发现了很多重要的推理方法。 其中之一就是 Chain-of-Thought&#xff08;CoT&#xff0…...

隐私计算技术及其在数据安全中的应用:守护数据隐私的新范式

前言 在数字化时代&#xff0c;数据已成为企业和组织的核心资产。然而&#xff0c;数据的收集、存储和使用过程中面临着诸多隐私和安全问题。随着法律法规对数据隐私的监管日益严格&#xff0c;企业和组织需要在数据利用与隐私保护之间找到平衡。隐私计算技术作为一种新兴的数据…...

使用Milvus向量数据库构建具有长期记忆的对话机器人

一、申请Milvus试用版 快速创建Milvus实例_向量检索服务 Milvus 版(Milvus)-阿里云帮助中心 二、配置 pip3 install pymilvus tqdm dashscope 由于在下文使用的时候需要用到Milvus的公网地址&#xff0c;而公网地址需要我们手动开启&#xff0c;参考下面这篇文章开启公网地…...

[Es_1] 介绍 | 特点 | 图算法 | Trie | FST

编程就是一门不断试错的艺术。不要害怕犯错&#xff0c;实践才会出真知。 什么是ElasticSearch&#xff1f; Elasticsearch是一个分布式的免费开源搜索和分析引擎 适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。 Elasticsearch在Apache Luc…...

企业安装加密软件有什么好处

企业安装加密软件可以有效保护敏感数据安全&#xff0c;防止信息泄露&#xff0c;并满足合规要求。以下是其主要好处及具体应用场景&#xff1a; 1. 防止数据泄露&#xff0c;保护核心资产 文件加密&#xff1a;对敏感文件&#xff08;如财务数据、客户信息、设计图纸&#xff…...

【MVCP】基于解纠缠表示学习和跨模态-上下文关联挖掘的多模态情感分析

多处可看出与同专栏下的DCCMCI很像 abstract 多模态情感分析旨在从多模态数据中提取用户表达的情感信息,包括语言、声学和视觉线索。 然而,多模态数据的异质性导致了模态分布的差异,从而影响了模型有效整合多模态互补性和冗余性的能力。此外,现有的方法通常在获得表征后直…...

2025软考【系统架构设计师】:两周极限冲刺攻略(附知识点解析+答题技巧)

距离2025上半年“系统架构设计师”考试已经只剩最后两周了&#xff0c;还没有准备好的小伙伴赶紧行动起来。为了帮助大家更好的冲刺学习&#xff0c;特此提供一份考前冲刺攻略。本指南包括考情分析、答题技巧、注意事项三个部分&#xff0c;可以参考此指南进行最后的复习要领&a…...

企业该如何选择合适的DDOS防护?

在互联网行业当中&#xff0c;大型的网络游戏和网络视频企业会经常受到DDOS攻击和CC攻击&#xff0c;这些网络攻击会导致服务器崩溃或者是网络中断&#xff0c;给企业造成巨大的经济损失&#xff0c;所以企业通常会配备合适的DDOS防护来进行防御&#xff0c;但是&#xff0c;对…...

CPU-GPU-NPU-TPU 概念

1.CPU 中央处理器&#xff08;Central Processing Unit&#xff0c;简称CPU&#xff09;作为计算机系统的运算和控制核心&#xff0c;是信息处理、程序运行的最终执行单元。CPU自产生以来&#xff0c;在逻辑结构、运行效率以及功能外延上取得了巨大发展。 2.GPU GPU&#xff0…...

DELL R770 服务器,更换OCP模块!

今天接到客户报修电话&#xff0c;说有一台 DELL PowerEdge R770服务器&#xff0c;网卡出现了故障&#xff0c;需要更换OCP模块。顺便做一个教程&#xff0c;分享给有需要的小伙伴们。 这一期的教程&#xff0c;听起来好像很高大上&#xff0c;很多小伙伴可能不知道OCP是什么…...

go.mod没有自动缓存问题

今天在安装Gin框架的时候遇到了一个问题 在Terminal运行下面命令安装时&#xff0c;包已经被下载安装到了GoPath中的bkg/mod go get -u github.com/gin-gonic/gin但是由于使用的是Go Modules&#xff0c;GPT以及大多数人给的说法是 运行完这个依赖包会被自动同步更新到go.mod…...

黑电平校正(Black Level Correction, BLC)算法

黑电平校正&#xff08;Black Level Correction, BLC&#xff09;算法 黑电平校正&#xff08;BLC&#xff09;是图像传感器&#xff08;如CMOS/CCD&#xff09;信号处理中的一个重要步骤&#xff0c;主要用于消除传感器暗电流&#xff08;Dark Current&#xff09;导致的基线…...

Ubuntu 安装 Keepalived

Keepalived 是什么 Keepalived 是一个用于实现高可用性&#xff08;High Availability, HA&#xff09;的服务&#xff0c;是一款基于 VRRP 协议的高可用软件&#xff0c;常用于主备切换和虚拟IP漂移&#xff0c;在服务故障时自动实现故障转移。 Keepalived 的核心功能 功能说…...

基于SpringBoot和PostGIS的应急运输事件影响分析-以1.31侧翻事故为例

目录 前言 一、技术实现路径 1、需要使用的数据 2、空间分析方法 二、相关模块设计与实现 1、运输路线重现开发 2、事故点影响范围实现 3、WebGIS可视化实现 三、讨论 1、界面结果展示 2、影响范围分析 四、总结 前言 在交通运输发达的当今社会&#xff0c;应急运输…...

ABP-Book Store Application中文讲解 - 前期准备 - Part 2:创建Acme.BookStore + Angular

ABP-Book Store Application中文讲解-汇总-CSDN博客 因为本系列文章使用的.NET8 SDK&#xff0c;此处仅介绍如何使用abp cli .NET 8 SDK SQL sevrer 2014创建Angular模板的Acme.BookStore。 目录 1. ABP cli创建项目 1.1 打开cmd.exe 1.2 创建项目 2. ABP Studio创建项…...

grpc到底是啥! ! !!

一、什么是RPC&#xff08;Remote Procedure Call&#xff09; 简单理解&#xff1a; RPC是一种让程序可以像调用本地函数一样去调用远程机器上的函数或方法。它的目标&#xff1a;让分布式系统中的不同计算机可以透明地互相通信&#xff0c;实现远程服务调用的封装。 举个例…...

ES6入门---第三单元 模块五:Map和WeakMap

map: users.map((user) 遍历 类似 json, 但是json的键(key)只能是字符串 map的key可以是任意类型 使用: let map new Map(); map.set(key,value); 设置一个值 map.get(key) 获取一个值 map.delete(key) 删除一项 map.has(key) 判断有没有 map.clear…...

【C++】【数据结构】【API列表】标准库数据结构

标准库数据结构 unordered_set 头文件&#xff1a;#include <unordered_set>​ 特性&#xff1a; 唯一性&#xff1a;所有元素唯一&#xff0c;重复插入无效无序性&#xff1a;元素存储顺序不固定自定义类型&#xff1a;若存储自定义类型需提供哈希函数和相等比较器 …...