在C++中,set
、map
、unordered_set
和unordered_map
这四种容器的使用场景如下:
-
set
:适用于需要保持元素独特性且无需特定顺序的情况。例如,存储一组唯一的用户名、IP地址等。set
实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值。 -
map
:适用于需要根据键来检索值的情况。例如,存储用户的信息、配置参数等。map
内部实现了一个红黑树,因此map内部的所有元素都是有序的。对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行的操作。 -
unordered_set
:适用于需要快速插入和查找的场景,需要存储唯一元素的场景。unordered_set
的内部实现了一个哈希表,因此,其元素的排列顺序是无序的。 -
unordered_map
:适用于需要快速插入和查找的场景,需要存储键值对并且通过键快速查找值的场景。unordered_map
内部实现了一个哈希表,因此,其元素的排列顺序是无序的。
总的来说,set
和map
适用于需要有序存储和快速查找的场景,而unordered_set
和unordered_map
适用于需要快速插入和查找的场景。在需要使用字典结构进行算法编程的大部分情况下,都需要使用 unordered_map
而不是 map
。
- unordered unordered_set unordered_map set mapunordered unordered_set unordered_map set unordered unordered_map unordered_set map unordered_set unordered_map unordered_map unordered map unordered_set set unordered multiset unordered_map unordered hack map tuples unordered_map map unordered map hash_map hash unordered_map unordered_map unordered数字map