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

【c++】set和map

在 C++ 中,set 和 map 是标准模板库(STL)提供的关联容器,它们内部通常基于红黑树实现,具有自动排序和快速查找的特性。

set 容器

set 是一种集合容器,它存储唯一的元素,并且会自动对元素进行排序(默认升序)。

主要特点:

  • 元素唯一,不允许重复
  • 元素自动排序
  • 插入、删除和查找操作的时间复杂度为 O (log n)

基本用法示例:

cpp

运行

#include <iostream>
#include <set>int main() {// 创建一个set容器,存储int类型std::set<int> mySet;// 插入元素mySet.insert(3);mySet.insert(1);mySet.insert(2);mySet.insert(2); // 重复元素,不会被插入// 遍历元素(会按升序输出)for (auto it = mySet.begin(); it != mySet.end(); ++it) {std::cout << *it << " ";}// 输出:1 2 3// 查找元素auto findIt = mySet.find(2);if (findIt != mySet.end()) {std::cout << "\n找到元素:" << *findIt << std::endl;}// 删除元素mySet.erase(2);return 0;
}

map 容器

map 是一种键值对容器,存储的是 key-value 对,其中键(key)是唯一的,并且会根据键自动排序。

主要特点:

  • 存储键值对(key-value)
  • 键唯一,值可以重复
  • 按键自动排序
  • 插入、删除和查找操作的时间复杂度为 O (log n)

基本用法示例:

cpp

运行

#include <iostream>
#include <map>
#include <string>int main() {// 创建一个map容器,键为int类型,值为string类型std::map<int, std::string> myMap;// 插入元素myMap.insert(std::make_pair(3, "张三"));myMap[1] = "李四"; // 另一种插入方式myMap[2] = "王五";// 遍历元素(会按键的升序输出)for (auto it = myMap.begin(); it != myMap.end(); ++it) {std::cout << "键:" << it->first << ",值:" << it->second << std::endl;}// 查找元素auto findIt = myMap.find(2);if (findIt != myMap.end()) {std::cout << "找到键为2的值:" << findIt->second << std::endl;}// 修改元素myMap[2] = "赵六";// 删除元素myMap.erase(1);return 0;
}

常用变种

  • multiset:与 set 类似,但允许元素重复
  • multimap:与 map 类似,但允许键重复
  • unordered_set 和 unordered_map:基于哈希表实现,不排序,但插入、删除和查找操作更快(平均 O (1))

选择使用 set 还是 map,主要取决于是否需要存储键值对关系。如果只需要存储唯一元素并排序,用 set;如果需要存储键值对,用 map

http://www.dtcms.com/a/442806.html

相关文章:

  • LabVIEW脉冲信号中值滤波
  • 做网站北京公司网站做301对优化有影响
  • 【序列晋升】47 Spring Authorization Server授权码模式深度解构:OAuth2.1协议与PKCE扩展的实现细节
  • 深圳市手机网站建设企业网站模板 兼容
  • YOLO入门教程(番外):机器视觉一文通
  • 网站做cdn服务流量ps做网站字号大小
  • Cooperative ISAC-empowered Low-Altitude Economy
  • YOLO入门教程(番外):卷积神经网络—填充与步幅
  • 中国建设银行校园招聘网站注册个公司要多少钱费用
  • 商务网站建设的主流程网站作为医院形象建设
  • 旅游网站推广方案华为外包做的网站
  • 国际民用航空组织ICAO
  • 1.6 傅里叶变换7-拉氏变换、Z变换
  • h5响应式网站设计方案软件开发步骤流程
  • 网站建设所用的工具大丰网店制作
  • 网站建设及网站推广网站开发与建设课程
  • python计算化学(autode系列—xTB)Atoms类详解
  • 网站没有在工信部备案中山seo外包
  • 不通过网站可以做360全景吗网页设计与制作基础教程
  • Simulink模型转换为UPPAAL模型(2016)
  • 部署Spring Boot项目+mysql并允许前端本地访问的步骤
  • 嵌入式linux内核驱动学习4——LED
  • 建设银行人力资源招聘网站建筑行业教育培训平台
  • 蚌埠网站制作网站开发好找工作吗
  • Spring Boot 整合 MyBatis
  • 【C++实战(70)】C++ 跨平台开发:CMake构建实战指南
  • algorithm <B> data manipulation in huffman algorithm 4/99
  • 三网合一网站建设福建省建设执业资格注册中心网站
  • Rokid JSAR 技术开发全指南+实战演练
  • 昆明做网站哪家便宜计算机网络课程设计