C++初学者指南-5.标准库(第一部分)–标准关联容器
文章目录
- C++初学者指南-5.标准库(第一部分)--标准关联容器
- 快速概览
- 集合
- 键值对映射
- 标准集合和映射是基于节点的
- 接口:如何使用
- 关联式容器
- std::set
快速概览
集合
有序集合 | 哈希集合 |
#include | #include <unordered_set> |
set / unordered_set
唯一可排序/可哈希的键
multiset / unordered_multiset
可能存在多个等效的键
键值对映射
有序键值对映射 | 哈希键值对映射 |
#include | #include <unordered_map> |
映射Maps存储的是std::pair<Key const, Value>
标准库中的关联容器是基于通过指针连接的节点构建的。每个节点存储一个键值对。
std::pair<First,Second> 包含两个不同或相同类型的数值。
#include <utility>
std::pair<int,double> p {4, 8.15};
cout << p.first <<'\n'; // 4
cout << p.second <<'\n'; // 8.15
// C++17 features:
std::pair p2 {4, 8.15}; // std::pair<int,double>
auto [fst,snd] = p2; // structured binding
cout << fst <<" "<< snd <<'\n'; // 4 8.15
map<Key,Value> / unordered_map<Key,Value>
唯一可排序/可哈希的键
multimap<Key,Value> / unordered_multimap<Key,Value>
可能存在多个等效的键
标准集合和映射是基于节点的
键或键-值对存储在通过指针连接的节点中。
有序集合/映射
通常实现为平衡二叉树
无序集合/映射
用哈希表实现
接口:如何使用
备忘录
关联式容器
std::set<KeyType,Compare>
std::map<KeyType,MappedType,KeyCompare>
std::unordered_set<KeyT,Hash,KeyEqual>
std::unordered_map<KeyT,MappedT,Hash,KeyEqual>
相关内容
cppreference: 容器库
cppreference: std::set
cppreference: std::map
cppreference: std::unordered_set
cppreference: std::unordered_map
C++漫游:容器和算法
5分钟介绍5种数据结构(by Conor Hoekstra)
关联容器的7个便利函数示例
关联式容器总览表
附上原文链接
如果文章对您有用,请随手点个赞,谢谢!^_^