set/map unordered_set/unordered_map适用情况

发布时间 2023-12-07 19:35:50作者: ponder776

在C++中,setmapunordered_setunordered_map这四种容器的使用场景如下:

  • set:适用于需要保持元素独特性且无需特定顺序的情况。例如,存储一组唯一的用户名、IP地址等。set实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值。

  • map:适用于需要根据键来检索值的情况。例如,存储用户的信息、配置参数等。map内部实现了一个红黑树,因此map内部的所有元素都是有序的。对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行的操作。

  • unordered_set:适用于需要快速插入和查找的场景,需要存储唯一元素的场景。unordered_set的内部实现了一个哈希表,因此,其元素的排列顺序是无序的。

  • unordered_map:适用于需要快速插入和查找的场景,需要存储键值对并且通过键快速查找值的场景。unordered_map内部实现了一个哈希表,因此,其元素的排列顺序是无序的。

总的来说,setmap适用于需要有序存储和快速查找的场景,而unordered_setunordered_map适用于需要快速插入和查找的场景。在需要使用字典结构进行算法编程的大部分情况下,都需要使用 unordered_map 而不是 map