C++ STL unordered_set

C++ STL 中的 unordered_set 是一个无序集合,保证元素唯一且不按特定顺序存放。键即元素本身,不可变且可通过键唯一找到。主要参数包括 Key(元素类型)、Hash(哈希函数类型)、Pred(相等比较函数)和 Alloc(分配器类型)。常用操作包括插入、删除元素以及获取元素个数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

template < class Key,                              // unordered_set::key_type/value_type
		   class Hash = hash<Key>,                 // unordered_set::hasher
		   class Pred = equal_to<Key>,             // unordered_set::key_equal
		   class Alloc = allocator<Key>            // unordered_set::allocator_type
		 > class unordered_set;

unordered_set 大概是无序集合的意思,存放的元素是唯一的,也就是不会有重复的元素,并且是不按特定顺序存放。

unordered_set 中,元素的值同时也是元素的键,键也可以唯一地找到值。键都是不可变的,因此 unordered_set 里的元素是不可以被修改,不过他们可以被插入和删除。

稍微翻译一下:

template < class Key,                              // 键类型或者值的类型
		   class Hash = hash<Key>,                 // 哈希函数,一元函数
		   class Pred = equal_to<Key>,             // 判断相等的函数
		   class Alloc = allocator<Key>            // 分配器类型
		 > class unordered_set;

好像一般情况下,只需要关心 Key,也就是元素的类型。以下是四个参数详解。

unordered_setC++ STL中的一个容器,用于存储一组不重复的元素,其内部实现是基于哈希表的。unordered_set中的元素是无序的,但是可以通过哈希函数快速查找元素。 unordered_set的用法和其他STL容器类似,可以使用insert()函数向其中插入元素,使用erase()函数删除元素,使用find()函数查找元素等。另外,unordered_set还提供了一些其他的成员函数,如size()、empty()、clear()等。 unordered_set的定义方式如下: ```c++ #include <unordered_set> using namespace std; unordered_set<int> mySet; //定义一个存储int类型元素的unordered_set ``` 在使用unordered_set时,需要注意以下几点: 1. unordered_set中的元素必须是可哈希的,即需要定义哈希函数和相等比较函数。 2. unordered_set中的元素是无序的,不能通过下标访问元素。 3. unordered_set中的元素不允许重复,如果插入重复元素会被忽略。 下面是一个使用unordered_set的例子: ```c++ #include <iostream> #include <unordered_set> using namespace std; int main() { unordered_set<int> mySet; mySet.insert(1); mySet.insert(2); mySet.insert(3); mySet.insert(2); //插入重复元素,会被忽略 cout << "mySet size: " << mySet.size() << endl; //输出元素个数 if (mySet.find(2) != mySet.end()) //查找元素2 cout << "2 is in mySet" << endl; else cout << "2 is not in mySet" << endl; mySet.erase(3); //删除元素3 for (auto it = mySet.begin(); it != mySet.end(); ++it) //遍历元素 cout << *it << " "; cout << endl; mySet.clear(); //清空元素 cout << "mySet size: " << mySet.size() << endl; //输出元素个数 return ; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值