赞
踩
目录
6.lower_bound 和 upper_bound 区间查找
首先要知道的是序列式容器,这种容器我们之前接触过,比如vector,list,deque等等。
序列式容器:
底层为线性的数据结果(物理上或者逻辑上),容器中的元素储存的是元素本身。
而且我们之前在使用序列式容器的时候,插入数据和删除数据只管操作就行,不用考虑其他因素。
关联式容器:
存储的是<key,value>结构的键对值,在数据检索时比序列式容器效率更高。
插入和删除数据时,要考虑该数据和它前后数据之间的关联性。
总的来说,关联式容器存放的数据不同,而且数据前后有一点的关联性。
通过插入新的元素来扩展容器,有效地通过插入的元素数量增加容器的大小。
因为集合中的元素是唯一的,插入操作检查每个插入的元素是否等同于已经在容器中的元素。
如果是,则不插入该元素,返回一个到这个现有元素的迭代器(如果该函数返回一个值)。
头文件:#include <set>
set和之前学习的容器一样,也是一个模板类,但是它的底层是关联式容器,也就是二叉搜索树,并且有很多的成员函数
构造函数有三个,分别是默认构造函数、使用迭代器区间的构造函数、拷贝构造函数。
因为底层是二叉搜索树,所有就会涉及到比较,构造函数参数就是比较方式,是一个仿函数,但是默认情况下是有缺省值的。
- #include<iostream>
- #include<set>
- using namespace std;
- int main()
- {
- int arr[] = { 9,5,1,4,7,6,2,3,5,5,5,5,5 };
- set<int> s2(arr, arr + sizeof(arr) / sizeof(arr[0]));
- //迭代器区间构造
- for (auto& e : s2)//取别名
- {
- cout << e << " ";
- }
- cout << endl;
- return 0;
- }
迭代器区间构造s2的时候,会发现其有 排序+去重
接下来让我们来学习一下 set 的各种接口
下面我们来简单来一下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。