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. 12.java设计模式之代理模式

    基本介绍: 代理模式(Proxy)为一个对象提供一个替身,以控制对这个对象的访问.即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能,想在 ...

  2. LeetCode283移动零问题java高效解法

    一.题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 1.必须 ...

  3. 5、Spring Boot缓存

    1.JSR107 Java Caching定义了5个核心接口,分别是CachingProvider.CacheManager.Cache.Entry.Expiry. CachingProvider:定 ...

  4. 利用代理IP池(proxy pool)搭建免费ip代理和api

    先看这里!!!---->转载:Python爬虫代理IP池(proxy pool) WIIN10安装中遇到的问题: 一.先安装Microsoft Visual C++ Compiler for P ...

  5. 新鲜出炉,这是全网讲的最详细的springboot整合消息服务了吧,建议收藏!

    springboot整合activeMq ActiveMq是Apache提供的开源消息系统采用java实现, 很好地支持JMS(Java Message Service,即Java消息服务) 规范 A ...

  6. 「LOJ 6287」诗歌

    题面 LOJ 6287 Solution 枚举中间点\(j\),题目即求是否存在\(m\)使\(a[j]-m\)与\(a[j]+m\)分别在\(j\)两侧. 对于\(j\)左侧任意一个点\(i\),都 ...

  7. symfony框架学习

    http://mozilla.com.cn/thread-52722-1-1.html安装网页翻译插件 symfony2是基于php的web框架 http://www.chrisyue.com/sym ...

  8. Django踩坑记录1

    from django.db import models # Create your models here. class Event(models.Model): name = models.Cha ...

  9. Java基础教程——线程状态

    线程状态 JAVA定义了6种线程状态: Thread.State public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, ...

  10. Java安全之JNI绕过RASP

    Java安全之JNI绕过RASP 0x00 前言 前面一直想看该JNI的相关内容,但是发现JNI的资料还是偏少.后面发现JNI在安全中应用非常的微妙,有意思. 0x01 JNI概述 JNI的全称叫做( ...