
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
若优先队列存储自定义类型(如Date),需重载operator<(大堆)或operator>public:// 重载<:用于大堆(按日期升序,旧日期优先级低)// 重载>:用于小堆(按日期降序,新日期优先级低)// 友元函数:支持cout输出return os;private:// 测试:大堆与小堆// 大堆(默认,按日期降序,最新日期优先级最高)cout << "大堆顶(最新日期):" << p
set:专注于 Key 的去重与有序,适用于 “仅需判断存在性” 的场景,如去重、交集计算;map:专注于 Key-Value 的有序映射,适用于 “关键字关联” 场景,如字典、频率统计;:允许 Key 重复,适用于 “Key 不唯一” 的场景,但需注意operator[]的支持差异。
/ 1. 哈希函数仿函数(支持内置类型和 string)// 内置类型直接转换为 size_t// string 特化:BKDR 哈希算法(减少冲突)// 131 是质数,增强分布均匀性// 2. 哈希表节点(存储泛化数据 T)T _data;// 存储的数据(K 或 pair<const K, V>)// 链表指针// 3. 哈希表迭代器(前置声明,供 HashTable 友元使用)// 4.
unordered_set/unordered_map 是 C++ 中高性能的无序容器,基于哈希表实现,平均增删查改效率达 O(1),是追求性能场景的首选。其与 set/map 的核心差异在于底层实现(哈希表 vs 红黑树),进而导致 Key 要求、迭代器特性与遍历顺序的不同。
通过MyMap与MySet底层复用:用一个泛型的红黑树支撑多种上层容器,减少代码冗余,降低维护成本。接口隔离:上层容器(mapset)通过仿函数(KeyOfValue)和类型定义,隐藏底层实现细节,只暴露符合自身语义的接口。语义约束:通过类型修饰(如const K)确保容器的语义正确性(set的 Key 不可改,map的 Key 不可改)。
类实例化出的每个对象,都有独⽴的数据空间,所以对象中肯定包含成员变量,⾸先函数被编译后是⼀段指令,对象中没办法存储,这些指令存储在⼀个单独的区域(代码段),那么对象中⾮要存储的话,只能是成员函数的指针。C++中有⼀些相对⽅便的语法,⽐如Init给的缺省参数会⽅便很多,成员函数每次不需要传对象地址,因为this指针隐含的传递了,⽅便了很多,使⽤类型不再需要typedef⽤类名就很⽅便。定义在哪⾥,就
缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值。函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省。全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。// 没有
性能层面:移动语义消除拷贝冗余,emplace接口减少临时对象;开发效率层面:统一初始化、Lambda、auto简化代码,可变参数模板扩展泛型能力;工程层面:智能指针、包装器提升代码安全性与可维护性。
unordered_set/unordered_map 是 C++ 中高性能的无序容器,基于哈希表实现,平均增删查改效率达 O(1),是追求性能场景的首选。其与 set/map 的核心差异在于底层实现(哈希表 vs 红黑树),进而导致 Key 要求、迭代器特性与遍历顺序的不同。







