C++ STL中的set和map
STL中的set和map在某种意义上是相似的,它们都使用红黑树(一种自平衡BST)。注意,搜索、插入和删除的时间复杂度是O(Log n)。
set和map的差异
设置的差异用于仅存储键,而map用于存储键值对。例如,考虑打印已排序的不同元素的问题,我们使用set,因为键需要值。而如果我们将问题更改为打印不同排序元素的频率,则使用map。我们需要map将数组值存储为键,频率存储为值。
输出:
输出:
set和map的变体
Set和Map,都存储惟一值和排序值。但是如果我们没有这样的要求,我们使用multiset/multimap和unordered_set/unordered_map。
Multimap
Multimap不允许通过索引存储元素。
输出:
Multiset
输出:
Unordered_set
输出:
Unordered_map
输出:
让我们用表格的形式来看看它们的区别:
序号 | set | map |
---|---|---|
1. | Set用于存储所有唯一元素。 | Map用于存储所有独特的元素。 |
2. | 它的语法是-: set< data_type > name_of_set; |
它的语法是-: Map < data_type, data_type > name_of_map |
3. | 它按递增顺序存储元素 | 它将元素存储在键值对中。 |
4. | 集的实现采用二叉搜索树。 | 映射使用平衡二叉树实现。 |
5. | 使用迭代器遍历集合。 | 它在#include |