#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 集合的更多相关文章

  1. set multiset 集合实现众数的统计

    众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重 ...

  2. C++STL之multiset多重集合容器

    multiset多重集合容器 multiset与set一样, 也是使用红黑树来组织元素数据的, 唯一不同的是, multiset允许重复的元素键值插入, 而set则不允许. multiset也需要声明 ...

  3. 转自http://blog.sina.com.cn/daylive——C++ STL set&multiset

    C++ STL set和multiset的使用 1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就  像一个集合一样.所有的操作的都是严格在logn时间 ...

  4. [STL]set/multiset用法详解[自从VS2010开始,set的iterator类型自动就是const的引用类型]

    集合 使用set或multiset之前,必须加入头文件<set> Set.multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素. sets和mul ...

  5. STL之multiset

    参见http://www.cplusplus.com/reference/set/multiset/ template < class T,                            ...

  6. multiset集合容器的集合运算:并、交、差

    set和multiset的内部通常是采用平衡二叉树来实现.当放入元素时,会按照一定的排序方法自动排序,默认是按照less<>排序规则来排序.这种自动排序的特性加速了元素查找的过程,但问题是 ...

  7. STL::set/multiset

    set:  Sets are containers that store unique elements following a specific order.集合里面的元素不能修改,只能访问,插入或 ...

  8. C++STL之set集合容器

    set集合容器 set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构, 在 插入元素时, 它会自动调整二叉树的排列, 把该元素放到适当的位置, 以确保每个子树根节点的键 ...

  9. stl之multiset容器的应用

    与set集合容器一样,multiset多重集合容器也使用红黑树组织元素数据,仅仅是multiset容器同意将反复的元素健值插入.而set容器则不同意. set容器所使用的C++标准头文件set.事实上 ...

随机推荐

  1. python UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 87: illegal multibyte sequence异常解决

    我们处理文本文件时,经常会遇到这样的报错: UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 87: illegal ...

  2. shell命令之一天一见:awk

    AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一. 这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯.彼得·溫伯格和布萊恩·柯林漢姓氏的首个字 ...

  3. 【OpenGL】GL_DEPTH_TEST深度测试问题

    记录一个深度测试的问题 在实现一个简单的OpenGL程序时,遇到了一个问题,深度测试总是有问题,无法正常显示,如下 正常情况为 通过调试发现屏幕空间中的所有深度值均为1. OpenGL代码如下: vo ...

  4. 什么?接口中方法可以不是抽象的「JDK8接口新语法的深度思考」

    先赞后看,养成习惯 文本已收录至GitHub开源仓库 Lu_JavaNodes 码云仓库地址Lu_JavaNodes,包含教程涉及所有思维导图,案例代码和后续讲解视频,欢迎Star增砖添瓦. 前言 在 ...

  5. [ERROR]pip insall pyodbc

    - 错误代码如下: pip install pyodbc Looking in indexes: http://172.16.1.250/repository/douban/simple Collec ...

  6. JWT实现token-based会话管理(转)

    JWT实现token-based会话管理   阅读目录 认识JWT demo要点说明 小结 上文<3种web会话管理的方式>介绍了3种会话管理的方式,其中token-based的方式有必要 ...

  7. C语言结构体定义位域,从bit0开始,依次到最高bit位

    位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数据 ...

  8. 2000_wideband extension of telephone speech using a hidden Markov model

    论文地址:基于隐马尔科夫模型的电话语音频带扩展 博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/12151866.html 摘要 本文提出了一种从l ...

  9. js—DOM详情

    1,什么是DOM,有什么作用 Document Object Model 文档对象模型,是一个html和xml文档的编程接口,可以将文档(html页面)解析成dom树,然后通过提供的dom接口来改变文 ...

  10. Android中使用Canvas和Paint绘制一个安卓机器人

    场景 在Android中画笔使用Paint类,画布使用Canvas类来表示. 绘图的基本步骤 首先编写一个继承自View的自定义View类,然后重写其onDraw方法,最后把自定义的view添加到ac ...