c++ unordered_set的find方法

std::unordered_set 中的 find 方法用于查找特定元素并返回一个迭代器,该迭代器指向找到的元素。如果元素不存在,则返回一个指向 unordered_set 的 end() 的迭代器。

语法

iterator find(const Key& key);
const_iterator find(const Key& key) const;
  • key: 要查找的元素。
  • 返回值:
    • 如果找到元素,返回指向该元素的迭代器。
    • 如果没有找到,返回 end() 迭代器。

示例

以下是一个示例,展示如何使用 find 方法来查找元素:

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> mySet = {1, 2, 3, 4, 5};

    int valueToFind = 3;
    auto it = mySet.find(valueToFind);
    
    if (it != mySet.end()) {
        std::cout << valueToFind << " 在集合中存在。" << std::endl;
    } else {
        std::cout << valueToFind << " 不在集合中。" << std::endl;
    }

    valueToFind = 6;
    it = mySet.find(valueToFind);
    
    if (it != mySet.end()) {
        std::cout << valueToFind << " 在集合中存在。" << std::endl;
    } else {
        std::cout << valueToFind << " 不在集合中。" << std::endl;
    }

    return 0;
}

输出

运行上述代码,输出将如下所示:

3 在集合中存在。
6 不在集合中。

总结

  • std::unordered_set::find 方法用于查找特定元素,返回一个指向该元素的迭代器,或者返回 end() 迭代器表示未找到。
  • 使用 find 方法可以有效地检查集合中是否存在某个元素,并直接获取该元素的迭代器,这在需要进一步操作时非常方便。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值