vi设计网站排行榜互联网技术的特征

张小明 2026/1/1 8:39:36
vi设计网站排行榜,互联网技术的特征,wordpress 电子书 插件,做网站卖广告多少钱1. 核心概念#xff1a;什么是 set#xff1f; std::set是C标准模板库(STL)中的一种关联式容器。它的核心特性可以概括为以下三点#xff1a; 唯一性#xff1a;容器内的所有元素都是唯一的#xff0c;不允许重复。 有序性#xff1a;元素在容器中总是按照特定的严格弱…1. 核心概念什么是 setstd::set是C标准模板库(STL)中的一种关联式容器。它的核心特性可以概括为以下三点唯一性容器内的所有元素都是唯一的不允许重复。有序性元素在容器中总是按照特定的严格弱序规则进行排序默认是升序。关键特性元素的value就是key。你无法直接修改set中的元素因为这可能破坏其有序性。2. 底层实现红黑树这是理解set所有特性的关键。set通常被实现为一颗红黑树这是一种高效的自平衡二叉搜索树。二叉搜索树保证了元素的有序存储使得查找、插入、删除的平均时间复杂度可以达到O(log n)。自平衡红黑树防止在最坏情况下例如插入有序序列退化成链表操作复杂度O(n)通过旋转和变色规则保持树的相对平衡保证了最坏情况下的操作复杂度也是O(log n)。3. 基本用法与代码示例cpp#include iostream #include set using namespace std; int main() { // 1. 初始化 setint mySet {5, 2, 8, 2, 1}; // 重复的2只会保留一个 // 此时 mySet 内容为: {1, 2, 5, 8} (已排序) // 2. 插入元素 mySet.insert(3); // 插入 3 auto ret mySet.insert(5); // 再次尝试插入5 if (!ret.second) { cout Insertion failed. Element 5 already exists. endl; } // 3. 遍历总是有序输出 cout Set elements: ; for (int num : mySet) { cout num ; // 输出: 1 2 3 5 8 } cout endl; // 4. 查找与计数 auto it mySet.find(3); if (it ! mySet.end()) { cout Found: *it endl; } cout Count of 2: mySet.count(2) endl; // 输出1 (存在) cout Count of 9: mySet.count(9) endl; // 输出0 (不存在) // 5. 删除元素 mySet.erase(2); // 通过值删除 auto it_to_erase mySet.find(5); if (it_to_erase ! mySet.end()) { mySet.erase(it_to_erase); // 通过迭代器删除 } // 6. 常用操作 cout Size: mySet.size() endl; cout Is empty? (mySet.empty() ? Yes : No) endl; mySet.clear(); // 清空所有元素 return 0; }4. 进阶特性与重要成员自定义排序规则你可以通过提供自定义的比较函数或函数对象来改变元素的排序方式。cpp// 示例1使用greaterint使set降序排列 setint, greaterint descendingSet {5, 2, 8, 1}; // 内容为: {8, 5, 2, 1} // 示例2自定义结构体排序 struct Person { string name; int age; }; // 定义比较仿函数按年龄升序排序 struct CompareByAge { bool operator()(const Person a, const Person b) const { return a.age b.age; } }; setPerson, CompareByAge personSet;关键迭代器与方法除了begin()和end()set提供了一些特有的迭代器方法这对于有序数据的操作非常高效lower_bound(key)返回第一个 key的元素的迭代器。upper_bound(key)返回第一个 key的元素的迭代器。equal_range(key)返回一个pair表示等于key的元素范围对于set这个范围最多包含一个元素。cppsetint s {10, 20, 30, 40, 50}; auto low s.lower_bound(25); // 指向30 (第一个 25 的元素) auto up s.upper_bound(35); // 指向40 (第一个 35 的元素) s.erase(low, up); // 删除区间 [30, 40)即删除30 // 此时 s {10, 20, 40, 50}5. 核心特点总结与对比特性std::setstd::vectorstd::unordered_set元素顺序严格有序根据比较规则插入顺序无序根据哈希值重复元素不允许允许不允许底层实现红黑树平衡BST动态数组哈希表平均时间复杂度查找/插入/删除:O(log n)查找: O(n) 尾部插入: O(1)查找/插入/删除:O(1)关键用途需要自动排序且去重的场景随机访问、尾部操作频繁仅需快速查找去重不关心顺序6. 典型应用场景自动去重与排序比如需要维护一个不重复的单词列表并随时按字母顺序输出。快速存在性检查在O(log n)时间内判断一个元素是否存在且需要数据有序。范围查询利用lower_bound/upper_bound高效查询某个分数区间的学生或某个价格区间的商品。7. 需要特别注意的要点不可直接修改元素set的迭代器是const的即使是非常量迭代器。因为直接修改可能破坏红黑树的有序性。必须先删除旧元素再插入新元素。内存开销相比vector或unordered_set红黑树的每个节点都需要额外的指针指向父节点和左右子节点以及颜色标记内存开销更大。迭代器稳定性除了被删除的元素set的迭代器在插入操作后通常保持有效因为红黑树是节点式容器。理解set的关键在于牢牢抓住其“有序”和“唯一”这两个核心并时刻意识到其底层是一棵红黑树。它在需要有序访问、范围查询的场景下无可替代但在只要求快速查找、不关心顺序时unordered_set通常是更优选择。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

iis网站管理助手在工商局网站做变更需要多久

目录 Python实战:打造高效Excel数据合并工具 (PyQt5 + Pandas) 1. 项目背景与需求 2. 核心功能 3. 技术栈 4. 实现细节 4.1 数据读取与预处理 4.2 智能日期格式化 4.3 分组与合并逻辑 4.4 JSON 输出 完整代码 5. 界面预览 6. 总结 专栏导读 🌸 欢迎来到Python办公自动化专栏…

张小明 2025/12/31 14:34:26 网站建设

网页和站点的区别大雄wordpress

【必收藏】网络安全护网全攻略:从准备到实战的零基础指南 本文详细介绍了网络安全"护网行动"的全流程指南,涵盖前期资产梳理、风险排查与团队建设,实战中的724小时监控、快速响应与应急处置,以及事后复盘整改与经验沉淀…

张小明 2025/12/31 14:34:21 网站建设

成都网站制作建设友情链接交换统计表

想调用第三方接口却不知如何配置? 静态数据、SQL 操作、API 调用分不清适配场景? JNPF 数据接口功能直接打破集成壁垒 —— 支持三类接口类型自由创建,可开启鉴权保障安全,还能提取变量灵活复用,接口复制、预览、导…

张小明 2025/12/31 22:16:53 网站建设

专业的培训网站建设二手交易网站开发

Stats系统监控工具:一站式解决macOS性能管理难题 【免费下载链接】stats exelban/stats: 这是一个跨平台的系统状态监控工具,可以实时显示CPU、内存、磁盘、网络等资源的使用情况,并以简洁美观的图形界面呈现给用户。 项目地址: https://gi…

张小明 2025/12/31 22:16:49 网站建设

网站搜索引擎引流有了主机和域名后如何做网站

下载链接 https://tool.nineya.com/s/1jbp5vdl2 软件介绍 4DDiG Tenorshare 是一款功能强大的数据恢复工具,专注于帮助用户轻松找回因误删、格式化、系统崩溃或病毒攻击等原因丢失的各种类型的数据。无论是照片、视频、文档还是音频文件,这款软件都能…

张小明 2025/12/31 22:16:47 网站建设

九龙坡集团网站建设家庭农场做网站的好处

Wan2.2-T2V-A14B在历史事件复原视频中的考据严谨性评估 在数字人文与智能创作交汇的今天,我们正见证一场视觉叙事方式的根本性变革。当一部关于“安史之乱”的教学短片能在几分钟内由AI生成,且画面中士兵铠甲纹路、旗帜形制、建筑斗拱比例皆有考古依据时…

张小明 2025/12/31 22:16:44 网站建设