C++初学者指南-5.标准库(第一部分)--标准关联容器

时间:2024-07-13 13:59:03

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个便利函数示例
关联式容器总览表

附上原文链接
如果文章对您有用,请随手点个赞,谢谢!^_^