STL-set&&multiset 集合
#include <iostream>
#include <cstdio>
#include <set> // 仿函数的原型
//struct greaters
//{
// bool operator()(const int &left,const int &right) const
// {
// return left>right;
// }
//}; using namespace std; int main()
{
// set容器,元素具有唯一性,但与寻常集合 不同,它是有序的
// 元素必修顺序插入,不能在指定位置插入
// 内部结构为红黑二叉树,加入数据的效率居然比vector还快?反正我信了 // list与vec的比较
//对于忘list中插入数据,很好理解,分配一个新的结点空间,添加到链表尾部即可
//对于往vectorz中添加数据,需要判断当前控件是否够用,不够用的话需要再次分配稍大的一些空间
// 然后把已有的元素拷贝到新的空间区域,然后释放已有的空间。
// 也许有人觉得这个拷贝操作很费时,觉得没有list添加的速度快,然而,事实并不是这样….. // 好了,再回归set
// insert,插入函数,重复失败,返回pair类型
// 复杂的数据类型,需要用仿函数确定元素的顺序 set<int> set1;
set1.insert();
set1.insert();
set1.insert(); for(set<int>::iterator it=set1.begin();it!=set1.end();++it)
{
cout<<*it<<' ';
}
cout<<endl; set1.erase(set1.begin()); for(set<int>::iterator it=set1.begin();it!=set1.end();++it)
{
cout<<*it<<' ';
}
cout<<endl; // 默认是从小到大的顺序
// set<int,less<int>> set1;
// 从大到小的顺序是 // set<int,greaters<int>> set2; pair<set<int>::iterator,bool> pair1=set1.insert();
cout<< *pair1.first <<endl;
if(pair1.second==true)
{
cout<<"YES"<<endl;
} pair1=set1.insert(); cout<<pair1.second<<endl; // set的数据查找
// lower_bound
// upper_bound
// equal_bound // 查找小于等于10的元素的位置
cout<<*set1.lower_bound()<<endl;
// 查找大于20的元素的位置
// 注意,这里没有等于哈
cout<<*set1.upper_bound()<<endl; for(set<int>::iterator it=set1.begin();it!=set1.end();++it)
{
cout<<*it<<' ';
}
cout<<endl; // 查找大于等于20的元素的位置
cout<<* set1.equal_range().first<<endl;
cout<<* set1.equal_range().second<<endl; // multiset ,元素可以重复,其余基本操作相似 return ;
}
STL-set&&multiset 集合的更多相关文章
- set multiset 集合实现众数的统计
众数问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重 ...
- C++STL之multiset多重集合容器
multiset多重集合容器 multiset与set一样, 也是使用红黑树来组织元素数据的, 唯一不同的是, multiset允许重复的元素键值插入, 而set则不允许. multiset也需要声明 ...
- 转自http://blog.sina.com.cn/daylive——C++ STL set&multiset
C++ STL set和multiset的使用 1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样.所有的操作的都是严格在logn时间 ...
- [STL]set/multiset用法详解[自从VS2010开始,set的iterator类型自动就是const的引用类型]
集合 使用set或multiset之前,必须加入头文件<set> Set.multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素. sets和mul ...
- STL之multiset
参见http://www.cplusplus.com/reference/set/multiset/ template < class T, ...
- multiset集合容器的集合运算:并、交、差
set和multiset的内部通常是采用平衡二叉树来实现.当放入元素时,会按照一定的排序方法自动排序,默认是按照less<>排序规则来排序.这种自动排序的特性加速了元素查找的过程,但问题是 ...
- STL::set/multiset
set: Sets are containers that store unique elements following a specific order.集合里面的元素不能修改,只能访问,插入或 ...
- C++STL之set集合容器
set集合容器 set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构, 在 插入元素时, 它会自动调整二叉树的排列, 把该元素放到适当的位置, 以确保每个子树根节点的键 ...
- stl之multiset容器的应用
与set集合容器一样,multiset多重集合容器也使用红黑树组织元素数据,仅仅是multiset容器同意将反复的元素健值插入.而set容器则不同意. set容器所使用的C++标准头文件set.事实上 ...
随机推荐
- 【做题笔记】 P1610 鸿山洞的灯
正解:DP 比较好写的/我用的算法:贪心 首先需要理解几个地方: 第二行输入的 \(n\) 个数字是每盏灯所在的地方.可以不按顺序,灯与灯之间的距离是个变量. 对于任意一段区间,只要是在 \(\tex ...
- uml图六种箭头的含义
转:https://blog.csdn.net/wglla/article/details/52225571 在看一些技术博客的时候,经常会见到博客里画上很多uml图.因为经常会被这几种表达关系的箭头 ...
- [git]git入门
usage: git [--version] [--help] [-C <path>] [-c name=value] [--exec-path[=<path>]] [--ht ...
- CCF_ 201512-2_消除类游戏
水平方向遍历一次,竖直方向遍历一次,将需要删除的位置标志入一个数组,最后比较输出即可. #include<cstdio> #include<iostream> using na ...
- Django ORM各种查询
正向和反向查询 正向 ----> 关联字段在当前表中,从当前表向外查叫正向 反向 —> 关联字段不在当前表中,当当前表向外查叫反向 正向通过字段,反向通过表名查 表结构 from djan ...
- 【UEFI】--- 探究BIOS NvRam空间的的位置以及大小
按照国际惯例--先上问题:1. 什么是NvRam空间,里面存储了什么数据 2. 如何找到NvRam空间在BIOS-bin文件中的位置 NvRam空间的学名为: Non-Volatile Ram即非易失 ...
- awk命令入门
什么是awk? AWK是一个强大的文本处理工具.可以使用awk读取输入文件.为数据排序.处理数据.对输入执行计算以及生成报表,还有无数其他的功能. 使用awk的基本格式 awk [options] ‘ ...
- 使用newtonsoft完美序列化WebApi返回的ValueTuple
由于开发功能的需要,又懒得新建太多的class,所以ValueTuple是个比较好的偷懒方法,但是,由于WebApi需要返回序列化后的json,默认的序列化只能将ValueTuple定义的各个属性序列 ...
- zabbix的mysql优化后的配置文件
zabbix的mysql数据库导致磁盘IO一直90%以上,访问卡的一逼 改了配置文件最后好了 [root@root /]# cat /etc/my.cnf [mysqld] datadir=/Data ...
- Linux设备中的UUID
UUID简介 UUID为系统中的存储设备提供唯一的标识字符串,不管这个设备是什么类型的.如果你在系统中启动的时候,使用盘符挂载时,可能找不到设备而加载失败,而使用UUID挂载时,则不会有这样的问题.( ...