unordered_set容器及其使用(c++)

是C++ STL中的一种关联容器,它可以存储一组不重复的元素,并支持快速查找、插入和删除操作,时间复杂度均为O(1)。

unordered_set容器的实现方式是哈希表,即将元素映射到哈希表中的某个位置上,通过哈希函数来计算元素的哈希值,将哈希值映射到哈希表中的位置上,从而实现快速查找、插入和删除操作。

unordered_set容器的特点:

1. 无序:元素没有固定的顺序,插入顺序与元素在容器中的位置无关。

2. 不重复:容器中的元素是唯一的,相同的元素只会被存储一次。

3. 快速:查找、插入和删除操作的时间复杂度均为O(1),具有很高的效率。

unordered_set容器的常用操作:

1. 插入元素:使用insert()函数将元素插入到容器中。

2. 删除元素:使用erase()函数删除指定的元素。

3. 查找元素:使用find()函数查找指定的元素,如果找到了则返回指向该元素的迭代器,否则返回end()迭代器。

4. 遍历元素:使用迭代器可以遍历容器中的所有元素。

unordered_set容器的代码实现:```

#include <iostream>
#include <unordered_set>

using namespace std;

int main()
{
    // 创建unordered_set容器
    unordered_set<int> uset;

    // 插入元素
    uset.insert(1);
    uset.insert(2);
    uset.insert(3);

    // 遍历容器中的元素
    for (auto it = uset.begin(); it != uset.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    // 查找元素
    auto it = uset.find(2);
    if (it != uset.end()) {
        cout << "Found: " << *it << endl;
    } else {
        cout << "Not found." << endl;
    }

    // 删除元素
    uset.erase(3);

    // 遍历容器中的元素
    for (auto it = uset.begin(); it != uset.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    return 0;
}


```

输出结果为:

```
3 2 1
Found: 2
2 1
```

可以看到,unordered_set容器中的元素没有固定的顺序,插入顺序与元素在容器中的位置无关。使用find()函数可以查找指定的元素,如果找到了则返回指向该元素的迭代器,否则返回end()迭代器。使用erase()函数可以删除指定的元素。使用迭代器可以遍历容器中的所有元素。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
unordered_setC++标准库中的一个容器,它是一个无序的集合,不允许重复的元素存在。它在头文件<unordered_set>中定义。 unordered_set容器的用法如下: 1. 创建unordered_set对象: ```cpp std::unordered_set<int> mySet; ``` 2. 插入元素: 使用insert()函数向unordered_set中插入元素。由于unordered_set不允许重复的元素存在,因此插入已经存在的元素将会被忽略。 ```cpp mySet.insert(10); mySet.insert(20); mySet.insert(10); // 重复元素将被忽略 ``` 3. 遍历unordered_set: 可以使用迭代器来遍历unordered_set中的元素。 ```cpp for(auto it = mySet.begin(); it != mySet.end(); ++it) { std::cout << *it << " "; } ``` 4. 查找元素: 使用find()函数可以查找unordered_set中的元素。如果找到了指定的元素,则返回指向该元素的迭代器;如果没找到,则返回end()迭代器。 ```cpp auto it = mySet.find(20); if(it != mySet.end()) { std::cout << "Found: " << *it << std::endl; } else { std::cout << "Not found" << std::endl; } ``` 5. 删除元素: 使用erase()函数可以删除unordered_set中的元素。可以删除指定值的元素,也可以删除指定位置的元素。 ```cpp mySet.erase(10); // 删除值为10的元素 auto it = mySet.find(20); if(it != mySet.end()) { mySet.erase(it); // 删除指定位置的元素 } ``` unordered_set容器的特点是它的元素是无序的,插入和删除元素的效率较高,但是查找操作相对较慢。它适用于不需要元素有序,并且不允许重复元素的场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值