Unodered Set

无序集(unorder sets)是一种不按特定顺序存储唯一元素的容器,允许根据元素的值快速检索单个元素。

unordered_set中,元素的值同时也是唯一标识它的键。键是不可变的,因此,unordered_set中的元素在容器中不能被修改,但是它们可以被插入和删除。

在内部,unordered_set中的元素并不按照任何特定的顺序排序,而是根据它们的散列值组织到桶中,从而允许根据它们的值直接快速访问单个元素(平均时间复杂度为常数)。

与set容器相比,Unordered_set容器通过键访问单个元素的速度更快,尽管它们通常在通过元素的子集进行范围迭代时效率较低。


容器的属性

关联性

关联容器中的元素是通过它们的键引用的,而不是通过它们在容器中的绝对位置引用的。

无序性

无序容器使用哈希表组织元素,允许通过键快速访问元素。

具有set特性

元素的值也是用来标识它的键。即value就是key

独一无二的key

容器中没有两个元素具有相同的键。

Allocator-aware

容器使用一个allocator对象来动态地处理其存储需求。即当你插入或者删除数据时,容器会自动处理空间。


常用方法

  • unorder_set<string> first容器定义
  • first.empty()判断容器是否是空,是空返回true,反之为false
  • first.size()返回容器大小
  • first.maxsize()返回容器最大尺寸
  • first.begin()返回迭代器开始
  • first.end()返回迭代器结束
  • first.find(value)返回value在迭代器的位置
  • first.count(key)返回key在容器的个数
  • first.insert(value)将value插入到容器中
  • first.erase(key)通过key删除
  • first.clear()清空容器

迭代器的使用

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <unordered_set>

using namespace std;

int main()
{
	unordered_set<string> myset = {"Mercury","Venus","Earth","Mars","Jupiter","Saturn","Uranus","Neptune"};
	for (auto it = myset.begin(); it != myset.end(); ++it)
		cout << *it << endl;
	return 0;
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐