首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++ std::unordered_set查找/计数/包含常量键引用

C++ std::unordered_set是C++标准库中的一个容器,用于存储唯一的元素集合。它是基于哈希表实现的,具有快速的查找、插入和删除操作的特点。

  1. 查找常量键引用:std::unordered_set中的元素是无序的,所以无法通过下标访问元素。但可以通过迭代器遍历集合来查找特定的键。示例代码如下:
代码语言:txt
复制
#include <iostream>
#include <unordered_set>

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

  int targetKey = 3;
  auto iter = mySet.find(targetKey);
  if (iter != mySet.end()) {
    std::cout << "Found key " << targetKey << " in the unordered_set." << std::endl;
  } else {
    std::cout << "Key " << targetKey << " not found in the unordered_set." << std::endl;
  }

  return 0;
}
  1. 计数键的个数:可以使用std::unordered_set中的count函数来计算特定键在集合中的出现次数。示例代码如下:
代码语言:txt
复制
#include <iostream>
#include <unordered_set>

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

  int targetKey = 3;
  int count = mySet.count(targetKey);
  std::cout << "The count of key " << targetKey << " is " << count << std::endl;

  return 0;
}
  1. 判断是否包含某个键:可以通过计数键的个数来判断集合是否包含特定的键。如果计数结果大于0,则表示集合中包含该键;否则,表示不包含。示例代码如下:
代码语言:txt
复制
#include <iostream>
#include <unordered_set>

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

  int targetKey = 3;
  bool contains = (mySet.count(targetKey) > 0);
  if (contains) {
    std::cout << "The unordered_set contains key " << targetKey << std::endl;
  } else {
    std::cout << "The unordered_set does not contain key " << targetKey << std::endl;
  }

  return 0;
}

C++ std::unordered_set的优势:

  • 快速查找、插入和删除:由于使用了哈希表的数据结构,std::unordered_set在平均情况下具有常数时间复杂度,因此具有快速的查找、插入和删除操作。
  • 不允许重复元素:std::unordered_set中的元素是唯一的,可以避免重复的数据存储,适合需要保存唯一值的场景。
  • 高效的哈希函数:std::unordered_set使用高效的哈希函数来计算键的哈希值,能够在大量数据的情况下保持高性能。

std::unordered_set的应用场景:

  • 去重:由于std::unordered_set中的元素是唯一的,可以用于去除重复元素,例如从一个文本文件中读取数据,并去除重复行。
  • 词频统计:可以使用std::unordered_set来统计文本中不重复单词的个数,将单词作为键存储在std::unordered_set中,并通过计数键的个数来得到每个单词的词频。
  • 缓存:由于std::unordered_set具有快速的查找操作,可以用于实现缓存结构,提高数据的访问速度。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云原生应用引擎:https://cloud.tencent.com/product/tekton
  • 腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云人工智能服务(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网通信(IoT):https://cloud.tencent.com/product/iotcloud
  • 腾讯云移动开发服务(Mobile):https://cloud.tencent.com/product/mobile
  • 腾讯云音视频服务(VOD):https://cloud.tencent.com/product/vod
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Example】C++ 标准库常用容器全面概述

capacity 返回在不分配更多的内存的情况下vector可以包含的元素数。(当前内存空间) cbegin 返回指向vector中起始位置的常量迭代器。...std::unordered_set unordered_set 哈希表 Key = Value No 无 std::unordered_multiset unordered_set 哈希表 Key =...每个元素同时用作排序和值。 序列以允许查找、插入和移除任意元素的方式表示,并包含与序列中的元素数量无关的多个操作(常量时间),至少在所有存储桶长度大致相等时如此。...at 查找具有指定键值的元素。...每个元素存储两个对象,包括一个排序和一个值。 序列以允许查找、插入和移除任意元素的方式表示,并包含与序列中的元素数量无关的多个操作(常量时间),至少在所有存储桶长度大致相等时如此。

3.3K30

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.map&&set(无习题)

C++ 中的 set 和 map 容器详细总结 1. 概述 C++ 标准模板库(STL)提供了多种关联容器,用于管理键值对和集合的数据。其中,set 和 map 是最常用的两种关联容器。...2.5 set 的应用场景 元素去重:set 常用于需要存储唯一元素的场景,例如从一个包含重复元素的集合中提取唯一值。...pair.first << ": " << pair.second << std::endl; } return 0; } 查找元素:可以使用 find() 函数查找指定是否存在。...快速查找:map 提供高效的查找机制,适合用于需要根据快速查找对应值的场景。 排序数据存储:由于 map 中的是有序的,它适合用于需要对数据按键进行排序的场景。...总结 C++ 中的 set 和 map 容器在数据管理和组织方面非常有用,它们基于红黑树实现,保证了数据的有序性和高效的查找、插入、删除操作。

9910
  • C++系列笔记(十)

    【导读】《21天学通C++》这本书通过大量精小短悍的程序详细而全面的阐述了C++的基本概念和技术,包括管理输入/输出、循环和数组、面向对象编程、模板、使用标准模板库以及创建C++应用程序等...STL集合类   容器 set和 multiset让程序员能够在容器中快速查找是存储在一维容器中的值。set和multiset之间的区别在于,后者可存储重复的值,而前者只能存储唯一的值。...在set和multiset中查找元素 诸如set、multiset、map和multimap等关联容器都提供了成员函数find(),它让您能够根据给定的查找值: auto iElementsFound...STL提供的容器类std::unordered_set就是基于散列的set。...要使用STL容器std::unordered_setstd::unordered_multiset,需要包含头文件:#include相比于std

    50520

    C++常见避坑指南

    这里顺带回顾下C++ std::string常见的字符串查找的方法: std::string::find 用于在字符串中查找指定的子字符串。...可用来检查字符串中是否包含指定的某些字符或者查找字符串中第一个出现的特定字符 std::string::find_first_not_of 用于查找字符串中第一个不与指定字符集合中的任何字符匹配的字符,...可以用来检查字符串中是否包含指定的某些字符,或者查找字符串中最后一个出现的特定字符 std::string::find_last_not_of 用于查找字符串中最后一个不与指定字符集合中的任何字符匹配的字符...除了以上几个方法外,还有查找满足指定条件的元素std::find_if, std::find_if 是 C++ 标准库中的一个算法函数,用于在指定范围内查找第一个满足指定条件的元素,并返回其迭代器。...执行控制块包括对关联资源的引用计数以及弱引用计数等。

    50210

    千万不要错过的后端【纯干货】面试知识点整理 I I

    (use_count方法),每个shared_ptr的拷贝都指向同一块内存,在最后一个shared_ptr被析构的时候,内存才会被释放 shared_ptr 是引用计数的方式,使用use_count查看计数...next; next->_pre = cur; } Cur 和 next 存在循环引用,他们的引用计数都变为 2 出了作用域之后,cur 和 next 被销毁,引用计数减 1 因此要释放cur...helgrind helgrind查找多线程程序中的竞争数据。 helgrind查找内存地址,那些被多于一条线程访问的内存地址,但是没有使用一致的锁就会被查出。...std::bin d封装可执行对象 防止头文件重复引用: #ifndef 作用:相同的两个文件不会被重复包含。...优点: 受C/C++语言标准的支持,不受编译器的限制。 不仅仅局限于避免同一个文件被重复包含,也能避免内容完全相同的两个文件(或代码片段)被重复包含

    80030

    重温C++的设计思想

    std的智能指针(std::unique_ptr,std::shared_ptr),使用智能指针目的之一是减少对象的拷贝:对超出作用域的对象进行释放。...std::move(ptr)是个右值引用。等价于static_cast&&>(ptr)。 2.3 内存对象的局部性 C++的对象缺省为值语义。...3.4 关联容器 c++的关联容器(set,map,multiset,multimap)是有序的,而在别的语言通常是无序的。名字带multi的允许重复。不带的不允许重复。...五、标准泛型算法 c++的标准泛型算法: sort:排序 reverse:反转 count:计数 find:查找 max:最大值 min:最小值 minmax:最小值和最大值 next_permutation...六、其他 constexpr和const是编译期常量和运行期常量的意思 lambda表达式:以一对中括号开始,不需要说明返回值(类似auto)

    1.6K247

    重温 CC++ 笔记

    前者是指向常量的指针,后者指向的是变量,但指针是常量 shared_ptr 的行为最接近原始指针,但不能滥用 shared_ptr 有少量的成本,而且有无法克服的循环引用风险,需要搭配 weak_ptr...指针是内存地址,引用是变量别名,指针可以是空,而引用不能为空(引用必须初始化,否则编译失败) 引用是通过指针常量实现的 指针完全映射了计算机硬件,操作效率高,是 C++ 效率高的根源。...可以查看有几个引用引用为 0 时,才会 delete 内存 make_shared() 还可以定制内存删除函数 缺点: 引用计数的存储和管理都是成本 在运行阶段,引用计数的变动很复杂,很难知道它真正释放资源的时机...一旦 shared_ptr 在某个不确定时间点析构释放资源,就会阻塞整个进程或者线程 可能遇到循环引用导致计数始终不为 0,无法 delete 内存 weak_ptr 专门为打破循环引用设计,只观察引用...g++ -I 包含查找路径? json, messagePack, pb 都敲一下 为什么需要序列化,不能直接 memcpy 吗?

    1.3K30

    C++进阶:详细讲解容器set与map(pair、multiset、multimap)

    1.关联式容器与序列式容器 关联式容器和序列式容器是 C++ 中两种不同的容器类型 关联式容器: 关联式容器主要包括 std::set, std::map, std::multiset, std:...这种结构允许通过来检索和关联对应的值,key代表键值,value表示与key对应的信息 2.1pair定义 std::pair 是C++标准库中提供的一个简单的键值对实现。...const_iterator find(const key_type& k) const; 在常量 map 中查找键值为 k 的元素,并返回一个指向该元素的迭代器。...5.3.4 [] 读取元素:当使用 [] 运算符时 如果指定的存在于 map 中,则返回与该关联的值 如果不存在,则会插入一个新的键值对,为指定的,值为默认构造的对应值类型的默认值,并返回该默认值的引用...插入元素:当使用 [] 运算符向 map 中插入元素时 如果指定的不存在,则会创建一个新的键值对,为指定的,值为指定的值,并返回该值的引用 如果已经存在,则直接返回对应的值的引用

    28310

    C++ Qt开发:使用关联容器类

    键值对存储: 存储键值对,每个关联一个值。 性能: 插入和查找操作的平均复杂度是 O(log n),适用于需要按键排序并进行频繁查找的场景。...value(const Key &key) const 返回指定的值。 contains(const Key &key) const 判断是否包含指定。...使用场景: 适用于需要键值对有序且唯一的场景。 QMultiMap 允许重复: QMultiMap 中可以包含重复的,即多个可以映射到相同的值。...唯一: 每个在 QHash 中是唯一的,不允许重复。 性能: 插入和查找操作的平均复杂度是 O(1),适用于需要快速插入和查找的场景。...1.3 QSet QSet 是 Qt 中的无序关联容器,类似于 C++ 标准库的 std::unordered_set。它主要用于存储唯一值,而不关心元素的顺序。

    49710

    C++系列笔记(十一)

    ::pair来指定要插入的和值:mapIntToString.insert(pait(1000,"One Thousand")); 在map或multimap查找元素 find...调用erase函数时将作为参数,这将删除包含指定的所有-值对: mapObject.erase(key); erase函数的另一种版本接受迭代器作为参数,并删除迭代器指向的元素: mapObject.erase...值对容器std::unordered_map 要使用这个模板类,需要包含头文件#include unordered_map的平均插入和删除时间是固定的,查找元素的时间也是固定的...从使用的角度看,这两种容器与std::map和std::multimap差别不大,可以类似的方式执行实例化、插入和查找。...引用计数智能指针 引用计数是一种记录对象的用户数量的机制。当计数降低到零后,便将对象释放。因此,引用计数提供了一种优良的机制,使得可共享对象而无法对其进行复制。

    1.3K20

    C++C++ 引用详解 ⑧ ( 普通引用常量引用 | 常量引用概念与语法 )

    一、普通引用 1、概念说明 之前的 【C++C++ 引用详解 ① ~ ⑦ 博客中 , 讲解的都是 普通引用 , 也就是 将 普通变量 赋值给 引用 , 过程如下 : 先定义 普通变量 a , 然后定义...普通引用代码示例 : // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace...: error C3892: “b”: 不能给常量赋值 2、常量引用概念与语法 在 C++ 语言中 , " 常量引用 " , 英文名称为 Const Reference , 是一种引用类型 , 另外一种引用就是...常量引用 b 修改 变量 a 的值 , 则会报错 : error C3892: “b”: 不能给常量赋值 错误代码示例 : // 包含 C++ 头文件 #include "iostream" //...d\n", b); // 修改 常量引用 b 的值 // 报错 : error C3892: “b”: 不能给常量赋值 b = 20; // 控制台暂停 , 按任意继续向后执行 system

    30710

    CC++面试题之语言基础篇(二)

    准备C/C++面试需要深入研究语言基础知识,掌握控制流结构、函数、指针和标准库,同时准备好回答各种与C/C++编程相关的问题,这将有助于你在面试中脱颖而出。...node2 node2->next = node1; // node2 引用 node1 // 循环引用,node1 和 node2 的引用计数永远不会降为零 return...大小:静态链接库包含库的副本,因此可执行文件通常较大。而动态链接库的多个程序可以共享相同的库,因此可执行文件较小。...其他 多线程支持:引入std::thread、std::mutex、std::condition_variable等多线程库,使C++更好地支持并发编程。...标准库改进:引入了许多新的标准库容器和算法,如std::unordered_map、std::unordered_setstd::array,以及更多的标准算法。

    18110

    C++【初识哈希】

    因此在 C++11 标准中,利用 哈希表 作为底层结构,重写了 set / map,就是 unordered_set / unordered_map 图片出自:C++新特性之三:标准库中的新增容器...:C++【set 和 map 学习及使用】 unordered_set 的使用 #include #include #include <unordered_set...4.3、性能对比 下面是性能测试代码,包含 大量重复、部分重复、完全有序 三组测试用例,分别从 插入、查找、删除 三个维度进行对比 注:测试性能用的是 Release 版,这里的基础数据量为 100 w...#include #include #include #include using namespace std;...,在数据 随机 的情况下,哈希各方面都比红黑强,在数据 有序 的情况下,红黑更胜一筹 单就 查找 这一个方面来说:哈希 一骑绝尘,远远的将红黑甩在了身后 ---- 总结 以上就是本次关于 C++【初识哈希

    28020

    C++C++ 引用详解 ① ( 变量的本质 - 引入 “ 引用 “ 概念 | 引用语法简介 | 引用做函数参数 | 复杂类型引用做函数参数 )

    变量值 10 ; 修改 引用 b 的值 , 变量 a 的值也会被修改 ; 代码示例 : // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 //...C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace std; // 导入 C 头文件...C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace std; // 导入 C 头文件...直接将变量传入函数即可 , 在函数中获取引用的值时 , 不需要使用指针 , 直接使用引用访问传入的变量 ; 代码示例 : // 包含 C++ 头文件 #include "iostream" // 使用...20, b = 10 5、代码示例 - 完整代码示例 完整代码示例 : // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中

    97721

    C++C++ 引用详解 ② ( 引用的意义 | 引用本质分析 | 引用常量特征 | 引用所占内存空间与指针相同 | 引用C++ 编译器实现 | 引用编译时会自动翻译为常量指针 )

    引用 b 的地址 , 打印出来 , 打印出的 变量 a 和 引用 b 的地址是相同的 , 说明这两个都是内存空间的别名 ; 代码如下 : // 包含 C++ 头文件 #include "iostream...Student { int age; int& a; int& b; }; 使用 sizeof 函数 , 获取上述结构体的大小 ; 使用下面的代码验证 : // 包含 C++ 头文件 #include...---- 1、C++ 引用常量指针 综合上述引用的特征 : 引用具有常量的特征 , 是一个常量 ; 引用和变量都是相同的内存空间的别名 , 其地址都指向内存空间 ; 引用本身也占用内存空间 , 占用大小与指针相同...; 综合上面的三种特点 , C++ 语言编译器 中 , 引用的本质是 : 类型* const 指针名称; 指针 ; 引用C++ 语言内部是 常量指针 , 下面 C++ 语言的 " 引用 " 引用类型...& 引用名称 等同于 下面的 C 语言的 " 常量指针 " 指针类型* const 指针名称 C++ 语言中的 引用 , 其在 编译器中的实现 就是 " 常量指针 " , 因此 引用 占用的内存空间与

    33420

    C++高阶】高效数据结构的探索(map&&set)

    这类容器与序列式容器(如vector、deque、list)的主要区别在于,关联式容器中的元素是按照特定的排序准则(通常是的大小)进行排序的,从而允许通过来快速查找、插入和删除元素。...(STL) 中的一个关联式容器,它包含的元素是唯一的,且默认情况下元素会按照升序排序。...+ 标准库 中的一个关联容器,它允许存储具有相同的多个值。...与 map 不同,map 中的是唯一的,而 multimap 中的可以重复 multimap中的接口可以参考map,功能都是类似的。...map实际应用 ✨计数 void test2() //映射计数 { string arr[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜", "苹果",

    10010
    领券