在C++中set,multiset,unordered_set,和unordered_multiset的区别
在C++标准模板库中,set,multiset,unordered_set,和unordered_multiset被用来存储元素。虽然它们相似,但在某些功能上不同。下面讨论了它们的差异。
1. Set: Set是关联容器,按特定顺序存储唯一元素。 以下是set的属性:
- 按排序顺序存储值。
- 仅存储唯一值。
- 只能插入或删除元素,不能修改元素。
- 我们可以通过给定开始迭代器和结束迭代器位置来删除多个元素。
- 使用迭代器遍历。
- Set使用二叉搜索树实现。
语法:
以下示例演示set的应用。
输出
2. Multisets: Multisets是关联容器,存储具有等价值的多个元素,按特定顺序排序。以下是multisets的属性:
- 按排序顺序存储元素。
- 它允许存储多个元素。
- 我们可以通过给定开始迭代器和结束迭代器来删除多个元素。
注意: 其他所有属性与set相似。
语法:
以下示例演示了multiset的应用。
输出
3. 无序集合: 无序集合是一种关联容器,可以以任意顺序存储唯一的元素。以下是无序集合的特点: ****
- 元素可以按任意顺序存储(没有排序顺序)。
- 仅存储唯一值。
- 使用哈希表存储元素。
- 我们只能删除给定迭代器位置的元素。
注意: 所有其他属性与集合相似。
语法:
以下示例演示了无序集合的应用。
输出
4. 无序多重集合: 无序多重集合是一个包含一组非唯一元素的关联容器,其元素没有排序顺序。以下是无序多重集合的特点:
- 元素可以按任意顺序存储。
- 可以存储重复的元素。
- 使用哈希表存储元素。
- 我们只能删除给定迭代器位置的元素。
注意: 所有其他属性与集合相似。
语法:
以下示例演示了无序多重集合的应用。
输出
set、multiset、unordered_set和unordered_multiset之间的区别:
- 简而言之, set 是一种存储 排序并且唯一 元素的容器。如果添加了 unordered ,则表示元素 无序 。
- 如果添加了 multiset ,则表示可以 存储重复元素 。