1. set.find(elem);

//查找elem元素,返回指向elem元素的迭代器。

 1 #include <iostream>
2 #include <set>
3
4 using namespace std;
5
6 int main()
7 {
8 set<int> setInt;
9
10 cout << "插入20个元素" << endl << endl;
11 for (int i = 0; i < 20; i++)
12 {
13 setInt.insert(i);
14 }
15
16 //使用 set.find(elem) 查找元素 10,返回指向元素 10 的迭代器
17 cout << "输入一个想要查找的int元素:";
18 int Num_1 = 0;
19 cin >> Num_1;
20
21 set<int>::iterator it_1 = setInt.find(Num_1);
22 if (it_1 != setInt.end()) //这里注意下,find 查找是一个逐个遍历的过程,他最终会拿到 end() 方法
23 {
24 cout << "拿了元素:" << *it_1 << endl;
25 }
26 else
27 {
28 cout << "没有拿到期望的元素 " << Num_1 << endl;
29 }
30
31 cout << "输入一个想要查找的int元素:";
32 int Num_2 = 0;
33 cin >> Num_2;
34
35 set<int>::iterator it_2 = setInt.find(Num_2);
36 if (it_2 != setInt.end()) //这里注意下,find 查找是一个逐个遍历的过程,他最终会拿到 end() 方法
37 {
38 cout << "拿了元素:" << *it_2 << endl;
39 }
40 else
41 {
42 cout << "没有拿到期望的元素 " << Num_2 << endl;
43 }
44
45 return 0;
46 }

打印结果:

2. set.count(elem);

//返回容器中值为elem的元素个数。对set来说,要么是0,要么是1。对multiset来说,值可能大于1。

 1 #include <iostream>
2 #include <set>
3
4 using namespace std;
5
6 int main()
7 {
8 set<int> setInt_1;
9 cout << "set 中插入了2个1,3个2,1个3" << endl;
10 setInt_1.insert(1);
11 setInt_1.insert(1);
12 setInt_1.insert(2);
13 setInt_1.insert(2);
14 setInt_1.insert(2);
15 setInt_1.insert(3);
16 cout << "输入想要查询的元素:";
17 int Num_1 = 0;
18 cin >> Num_1;
19 cout << "找到了" << setInt_1.count(Num_1) << "个元素" << Num_1 << endl;
20
21 cout << endl;
22 multiset<int> setInt_2;
23 cout << "multiset 中插入了2个1,3个2,1个3" << endl;
24 setInt_2.insert(1);
25 setInt_2.insert(1);
26 setInt_2.insert(2);
27 setInt_2.insert(2);
28 setInt_2.insert(2);
29 setInt_2.insert(3);
30 cout << "输入想要查询的元素:";
31 int Num_2 = 0;
32 cin >> Num_2;
33
34 cout << "找到了" << setInt_2.count(Num_2) << "个元素" << Num_2 << endl;
35
36 return 0;
37 }

打印结果:

3. set.lower_bound(elem); 以及 set.upper_bound(elem);

set.lower_bound(elem);//返回第一个>=elem元素的迭代器。

set.upper_bound(elem);//返回第一个>elem元素的迭代器。

 1 #include <iostream>
2 #include <set>
3
4 using namespace std;
5
6 int main()
7 {
8 set<int> setInt;
9 for (int i = 0; i < 10; i++)
10 {
11 setInt.insert(i);
12 }
13
14 cout << "输入一个 int 元素:";
15 int Num = 0;
16 cin >> Num;
17
18 set<int>::iterator it_1 = setInt.lower_bound(Num);
19 set<int>::iterator it_2 = setInt.upper_bound(Num);
20 cout << "lower_bound 返回迭代器的元素为:" << *it_1 << endl;
21 cout << "lower_bound 返回迭代器前一个元素为:" << *--it_1 << endl;
22 cout << "upper_bound 返回迭代器的元素为:" << *it_2 << endl;
23
24 return 0;
25 }

打印结果:

5. set.equal_range(elem);

//返回容器中与elem相等的上下限的两个迭代器。上限是闭区间,下限是开区间,如[beg,end)。函数返回两个迭代器,而这两个迭代器被封装在pair中。

 1 #include <iostream>
2 #include <set>
3
4 using namespace std;
5
6 int main()
7 {
8 set<int> setInt;
9 cout << "插入1个1,3个2,2个3";
10 setInt.insert(1);
11 setInt.insert(2);
12 setInt.insert(2);
13 setInt.insert(2);
14 setInt.insert(3);
15 setInt.insert(3);
16 cout << endl;
17
18 cout << "1-3 输入一个数字:";
19 int Num = 0;
20 cin >> Num;
21
22 // equal_range 的第一个迭代器会返回第一个等于参数的元素
23 // equal_range 第二个迭代器会返回第一个不等于参数的元素
24 pair<set<int>::iterator, set<int>::iterator> it = setInt.equal_range(2);
25
26 cout << "第一个迭代器的值为:" << *(it.first) <<endl;
27 cout << "第二个迭代器的值为:" << *(it.second) << endl;
28
29 return 0;
30 }

打印结果:

===================================================================================================================================

STL——容器(Set & multiset)的查找的更多相关文章

  1. C++STL容器(lower_bound,upper_bound)

    C++STL容器中有三种二分查找函数,这里分享其中的两个 这两个函数其实都可以理解为不破坏数组次序的前期下能将目标元素插入到数组的第几个位置,不过在细节上两个函数有所差异 int d[6]={0,2, ...

  2. STL Set和multiset 容器

    STL Set和multiset 容器 set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列. 元素插入过程是按排序规则插入,所以不能指定插入位 ...

  3. STL——容器(Set & multiset)的默认构造 & 带参构造 & 对象的拷贝构造与赋值

    1. 默认构造 set<int> setInt;              //一个存放int的set容器. set<float> setFloat;          //一 ...

  4. c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例

    c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...

  5. STL容器的适用情况

     转自http://hsw625728.blog.163.com/blog/static/3957072820091116114655254/ ly; mso-default-props:yes; m ...

  6. STL容器的本质

    http://blog.sina.com.cn/s/blog_4d3a41f40100eof0.html 最近在学习unordered_map里面的散列函数和相等函数怎么写.学习过程中看到了一个好帖子 ...

  7. STL - set和multiset

    set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列.元素插入过程是按排序规则插入,所以不能指定插入位置. set采用红黑树变体的数据结构实现, ...

  8. c++ STL容器初探

    什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...

  9. C++ STL set和multiset的使用

    C++ STL set和multiset的使用 std::set<int> s;那个s这个对象里面存贮的元素是从小到大排序的,(因为用std::less作为比较工具.) 1,set的含义是 ...

  10. STL 容器简介

    一.概述 STL 对定义的通用容器分三类:顺序性容器.关联式容器和容器适配器. 顺序性容器是一种各元素之间有顺序关系的线性表.元素在顺序容器中保存元素置入容器时的逻辑顺序,除非用删除或插入的操作改变这 ...

随机推荐

  1. python + selenium 搭建环境步骤

    介绍在windows下,selenium python的安装以及配置.1.首先要下载必要的安装工具. 下载python,我安装的python3.0版本,根据你自己的需要安装 下载setuptools ...

  2. 基础网络路由命令(tracert、route print 、netstat )

    网络知识有限,平时自己积累,捣鼓自己电脑使用,如是一样菜鸟,请勿自行在服务器端使用. 快捷键Ctrl+C  结束跟踪 快捷键    ↑      可以查询上次输入的命令 window+R组合键,输入C ...

  3. kali 系列学习07-攻击之密码生成

    比较理想的字典是拖库字典,比如CSDN字典,如果要生成字典,可以使用Crunch 和 rtgen 两个工具, 一.密码生成 1.Crunch (1)启动crunch命令.执行命令如下所示. #crun ...

  4. 装了IDM后看网页有时会自动弹出下载怎么办

    我们在安装了IDM之后,浏览一些网站时可能会自动弹文件下载窗口,但有时内容并非我们要下载的.对此类自动弹下载对话框的情况,操作者可进行自定义设置.不仅可通过设置文件格式来禁止自动弹窗,也可通过设置特定 ...

  5. 对于this和当前线程的一些理解

    在学习这个InheritableThreadLocal类的时候,我对于有个地方一直没有理解,我发现了盲点. 1 private void init(ThreadGroup g, Runnable ta ...

  6. 分布式监控系统之Zabbix proxy

    前文我们了解了zabbix 使用snmp和jmx信道采集数据的相关使用配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14029864.html:今天我们来 ...

  7. Java数据结构(七)—— 排序算法

    排序算法(Sort Algorithm) 排序算法介绍和分类 将一组数据,依指定顺序进行排列 排序的分类 内部排序 指将需要处理的所有数据都加载到内部存储器中进行排序 外部排序 数据量过大,无法全部加 ...

  8. 【应用服务 App Service】解决无法从Azure门户SSH登录问题

    问题描述 中国区的Azure App Service(应用服务)已经支持创建Docker并选择Linux环境.在使用中,我们可以继续通过kudu站点的方式登录查看站点的一些日志及部署文件.它的登录方式 ...

  9. arthas监控elasticsearch(7.x)

    arthas介绍 arthas是Alibaba推出的java诊断工具 官方文档 准备 准备docker环境 name port centos_arthas 3658:3658 docker run - ...

  10. java17(面向对象)

    1.面向过程:所有事情都是按顺序一件件做,未知主体 买菜,做饭,吃饭,洗碗 面向对象:将功能封装到对象之中,让对象去实现功能 去饭馆,告诉服务员要吃啥,然后等着端上来. 面向对象的目的: 复杂的东西简 ...