C++容器list、vector、map、set全面解析与应用
版权申诉
20 浏览量
更新于2024-09-14
3
收藏 95KB PDF 举报
n"个elem元素的拷贝。list
list是以双向链表的形式实现的,不支持随机访问,但允许在任何位置高效地插入和删除元素。它使用迭代器进行访问,通过迭代器可以向前或向后遍历列表。创建list时,不需要预先指定大小。
list对象的创建
list<数据类型>list容器名称;
list<int>lstInt; // 一个存放int的list容器
list<char>lstChar; // 一个存放char的list容器
list常用操作
list.size(); // 返回容器中元素的个数
list.empty(); // 判断容器是否为空
list.push_back(1); // 在容器尾部添加一个元素
list.push_front(2); // 在容器头部添加一个元素
list.pop_back(); // 移除容器尾部的一个元素
list.pop_front(); // 移除容器头部的一个元素
list.clear(); // 清空容器的所有数据
list.erase(iter); // 删除迭代器iter指向的元素
list.splice(iter, lst2, beg, end); // 从lst2的[beg, end)区间剪切元素并插入到iter位置
list.reverse(); // 反转容器中的元素顺序
map
map是一个关联容器,它存储键值对<key, value>,其中key是唯一的。它使用红黑树实现,提供O(log n)的插入和查找效率。map的元素不能被直接索引,但可以通过键来查找对应的值。
map对象的创建
map<键类型, 值类型>map容器名称;
map<int, string>mymap; // 创建一个键为int,值为string的map
map常用操作
map.size(); // 返回容器中元素的个数
map.empty(); // 判断容器是否为空
map.insert(pair<键类型, 值类型>(k, v)); // 插入一个键值对
map[k]; // 通过键k查找对应的值,如果不存在则自动插入并返回默认值
map.erase(k); // 删除键为k的键值对
map.find(k); // 查找键为k的迭代器,若找不到则返回end()
set
set也是关联容器,类似于map,但它只存储键而不存储值,键必须是唯一的。set同样基于红黑树,提供O(log n)的插入和查找效率。
set对象的创建
set<数据类型>set容器名称;
set<int>myset; // 创建一个存储int的set
set常用操作
set.size(); // 返回容器中元素的个数
set.empty(); // 判断容器是否为空
set.insert(k); // 插入一个元素k
set.erase(k); // 删除元素k
set.find(k); // 查找元素k的迭代器,若找不到则返回end()
Hash
虽然没有直接提及哈希表,但在C++11中引入了unordered_map和unordered_set,它们使用哈希表实现,提供了更快的查找速度(平均O(1)),但可能因为哈希冲突而牺牲一定的性能。
unordered_map对象的创建
unordered_map<键类型, 值类型>umap容器名称;
unordered_map<int, string>umymap; // 创建一个键为int,值为string的unordered_map
unordered_set对象的创建
unordered_set<数据类型>uset容器名称;
unordered_set<int>myuset; // 创建一个存储int的unordered_set
总结:
C++中的容器list、vector、map和set分别提供了不同的数据结构和操作特性,适应不同的应用场景。list适合频繁插入和删除的操作;vector适用于快速随机访问;map和set则用于键值对的关联存储,其中set只存储键。根据实际需求选择合适的容器能显著提高代码效率。
weixin_38747211
- 粉丝: 12
- 资源: 901
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦