STL——容器(Set & multiset)的查找
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)的查找的更多相关文章
- C++STL容器(lower_bound,upper_bound)
C++STL容器中有三种二分查找函数,这里分享其中的两个 这两个函数其实都可以理解为不破坏数组次序的前期下能将目标元素插入到数组的第几个位置,不过在细节上两个函数有所差异 int d[6]={0,2, ...
- STL Set和multiset 容器
STL Set和multiset 容器 set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列. 元素插入过程是按排序规则插入,所以不能指定插入位 ...
- STL——容器(Set & multiset)的默认构造 & 带参构造 & 对象的拷贝构造与赋值
1. 默认构造 set<int> setInt; //一个存放int的set容器. set<float> setFloat; //一 ...
- c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...
- STL容器的适用情况
转自http://hsw625728.blog.163.com/blog/static/3957072820091116114655254/ ly; mso-default-props:yes; m ...
- STL容器的本质
http://blog.sina.com.cn/s/blog_4d3a41f40100eof0.html 最近在学习unordered_map里面的散列函数和相等函数怎么写.学习过程中看到了一个好帖子 ...
- STL - set和multiset
set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列.元素插入过程是按排序规则插入,所以不能指定插入位置. set采用红黑树变体的数据结构实现, ...
- c++ STL容器初探
什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...
- C++ STL set和multiset的使用
C++ STL set和multiset的使用 std::set<int> s;那个s这个对象里面存贮的元素是从小到大排序的,(因为用std::less作为比较工具.) 1,set的含义是 ...
- STL 容器简介
一.概述 STL 对定义的通用容器分三类:顺序性容器.关联式容器和容器适配器. 顺序性容器是一种各元素之间有顺序关系的线性表.元素在顺序容器中保存元素置入容器时的逻辑顺序,除非用删除或插入的操作改变这 ...
随机推荐
- Microsoft Visual C++ 2005 SP1无法安装
安装时出现需要Microsoft Visual C++ 2005 Redistributble对话框, 里面说Command line option syntax error . Type Comma ...
- Python_微信开发
<!-- 发消息功能 --> 0.微信开发的2个库 pip install werobot pip install 1.新建项目 2.项目下新建 robot 的app 3.写robot.p ...
- 面试大厂必看!就凭借这份Java多线程和并发面试题,我拿到了字节和美团的offer!
最近好多粉丝私信我说在最近的面试中老是被问到多线程和高并发的问题,又对这一块不是很了解,很简单就被面试官给问倒了,被问倒的后果当然就是被刷下去了,因为粉丝要求,我最近也是花了两天时间 给大家整理了这一 ...
- 深度分析:面试阿里,字节99%会被问到Java类加载机制和类加载器
1. 类加载机制 所谓类加载机制就是JVM虚拟机把Class文件加载到内存,并对数据进行校验,转换解析和初始化,形成虚拟机可以直接使用的Jav类型,即Java.lang.Class. 2. 类加载的过 ...
- 怎么借助CrossOver安装想要的Windows程序
面对安装双系统时的繁琐步骤,以及虚拟机软件那庞大的体积,CrossOver的出现,让一切都变得简单起来. CrossOver自带的一系列的Windows应用,涵盖游戏软件.办公软件.设计软件等多个种类 ...
- 早安打工人! 来把你的.NET程序模块化吧
嗨朋友们,大家好! 还记得我是谁吗? 对了! 我就是 .NET 打工人 玩双截棍的熊猫 今天呐,我特别要向 写框架 的朋友们,想要写框架 ** 的朋友们,已经有框架** 的朋友问声好! 为什么呢?因为 ...
- idea中安装阿里巴巴的代码规范插件
1.打开iead软件,从左上角点击File -> Settings -> Plugins 2.安装完成后,重启idea软件,即可正常使用了.
- The Balance POJ - 2142
首先,可以知道题目要求解一个\(ax+by=c\)的方程,且\(x+y\)最小. 感性证明: 当\(a>b\)时,\(y\)取最小正整数解,\(b\)减的多,\(a\)增的少,此时\(x+y\) ...
- Docker实战 | 第一篇:Centos8 安装 Docker
1. 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 2. 配置镜像源 yum config-manager --a ...
- CentOS下设置ipmi
1.载入支持 ipmi 功能的系统模块 modprobe ipmi_msghandler modprobe ipmi_devintf modprobe ipmi_poweroff modprobe i ...