set在OI中非常好用,归纳几种常见的功能qwq

#include<iostream>
#include<cstdio>
#include<set>
//set容器常见用法
using namespace std;
//用仿函数可以做到自定义排序规则
class R
{
public:
bool operator()(const int &pre,const int &bac)
{
return pre>bac;//保证序列前大于后
}
};
set<int/*,R*/> s; //去掉注释就会使用仿函数,
int main()
{
s.insert();
s.insert();
s.insert();
s.insert();
s.insert(); for(set<int>::iterator i=s.begin();i!=s.end();i++)
cout<<*i<<" "; //print 1 2 3 4 5 //erase
cout<<endl<<"Erase";
cout<<endl<<s.erase()<<endl; //删除成功返回1,否则返回0 for(set<int>::iterator i=s.begin();i!=s.end();i++)
cout<<*i<<" "; //print 1 2 4 5 //uper_bound & lower_bound
//uper_bound(x):返回 s中 满足大于x 的最小元素 的迭代器
//lower_bound(x):返回 s中 满足大于等于x 的最小元素 的迭代器
cout<<endl<<"uper_bound & lower_bound";
cout<<endl<<*s.upper_bound(); //print 4 cout<<endl<<*s.lower_bound()<<endl; //print 4 cout<<endl<<*s.upper_bound(); //print 5 cout<<endl<<*s.lower_bound()<<endl; //print 4 cout<<endl<<(s.lower_bound()==s.end())<<endl; //print 1 当没有一个元素大于等于6时,返回尾迭代器 //insert
cout<<endl<<"insert"<<endl;
s.insert(); for(set<int>::iterator i=s.begin();i!=s.end();i++)
cout<<*i<<" "; //print 1 2 4 5 6
return ;
}

值得注意的是,当我们用仿函数改变规则使序列从大到小后,upper_bound和lower_bound的意义就不是注释所描述的那样了。现在这两个函数的功能会很奇怪,下面我用一种适用于任何情况的简单非专业描述来说明这两个函数的功能

lower_bound(x) :

  1. 当容器中存在等于x的元素,返回该元素迭代器
  2. 否则,假设按照容器元素排列规则将x插入容器合适位置,那么返回的是插入后 x下一个(右边)元素的迭代器,若无元素则返回尾迭代器

exa.

  • 6 5 3 2 1 x=4,假设插入后:6 5 4 3 2 1  此时 返回元素3的迭代器
  • # % ^ & * (  ,假设插入¥(假设这是有序序列),# ¥ % ^ & * (  此时 返回元素%的迭代器

upper_bound(x) :

  就是没有1.规则的lower_bound(x) 。。。其他一样

set容器几个关键函数的更多相关文章

  1. online ddl 使用、测试及关键函数栈

    [MySQL 5.6] MySQL 5.6 online ddl 使用.测试及关键函数栈  http://mysqllover.com/?p=547 本文主要分为三个部分,第一部分是看文档时的笔记:第 ...

  2. C++ - 容器(container)的erase()函数

    容器(container)的erase()函数 本文地址: http://blog.csdn.net/caroline_wendy/article/details/23996013 容器(contai ...

  3. C++ Opencv 傅里叶变换的代码实现及关键函数详解

    一.前言 最近几天接触了图像的傅里叶变换,数学原理依旧不是很懂,因此不敢在这里妄言.下午用Opencv代码实现了这一变换,有一些经验心得,愿与大家分享. 二.关键函数解析 2.1copyMakeBor ...

  4. [pixhawk笔记]6-uORB流程及关键函数解析

    本文中将结合代码.文档及注释,给出uORB执行流程及关键函数的解析,由于uORB的机制实现较为复杂,所以本文主要学习如何使用uORB的接口来实现通信.回到上一篇笔记中的代码: #include < ...

  5. 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...

  6. 痞子衡嵌入式:MCUXpresso IDE下将关键函数重定向到RAM中执行的几种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下将关键函数重定向到RAM中执行的几种方法. 前段时间痞子衡写了一篇 <在IAR开发环境下将关键函数重 ...

  7. 痞子衡嵌入式:在MDK开发环境下将关键函数重定向到RAM中执行的几种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在MDK开发环境下将关键函数重定向到RAM中执行的几种方法. 这个关键函数重定向到 RAM 中执行系列文章,痞子衡已经写过 <IA ...

  8. openswan中ISAKMP交互过程关键函数接口

    1. ISAKMP交互过程中关键函数接口 下面分别说明不同的阶段和模式下的函数接口以及对应的报文. 2. 第一阶段(Phase I)主模式函数接口 发送端 响应端 main_outI1 主模式第一包 ...

  9. C++——STL之vector, list, deque容器对比与常用函数

    STL 三种顺序容器的特性对比: vector 可变数组,内存空间是连续的,容量不会进行缩减.支持高效随机存取,即支持[]和at()操作.尾部插入删除效率高,其他位置插删效率较低: list 双向链表 ...

随机推荐

  1. Swift3.0 UICollectionView 删除,拖动

    UICollectionView实现了一下常见的新闻分类.  附有效果图 近期一直在深入学习swift,实现了CollectionView item的头东与删除,用的都是系统的一些函数方法,看起来比较 ...

  2. ExtWebComponents

    我们很高兴地宣布Sencha ExtWebComponents的早期版本现已推出.ExtWebComponents提供了数百个预构建的UI组件,您可以轻松地将它们集成到使用任何框架构建的Web应用程序 ...

  3. video.py OpenCv例程阅读

    #!/usr/bin/env python ''' Video capture sample. Sample shows how VideoCapture class can be used to a ...

  4. C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用XXX的问题

    C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用XXX的问题 C# 中使用Image.FromFile(string path)后,提示该文件正在被另 ...

  5. hud3371 Connect the Cities 简单最小生成树

    //我看过Discuss说不能用克鲁斯卡尔因为有很多边 //但是只能用G++过,C++的确超时 #include <stdio.h> #include <string.h> # ...

  6. linux添加开机启动脚本

    [root@mysql ~]# ll /etc/rc.local lrwxrwxrwx. 1 root root 13 Mar 12 22:20 /etc/rc.local -> rc.d/rc ...

  7. Codeforces 669D Little Artem and Dance (胡搞 + 脑洞)

    题目链接: Codeforces 669D Little Artem and Dance 题目描述: 给一个从1到n的连续序列,有两种操作: 1:序列整体向后移动x个位置, 2:序列中相邻的奇偶位置互 ...

  8. Dima and Magic Guitar CodeForces - 366E

    Dima and Magic Guitar CodeForces - 366E 题意: http://blog.csdn.net/u011026968/article/details/38716425 ...

  9. Codeforces Round #321 (Div. 2)

    水 A - Kefa and First Steps /************************************************ * Author :Running_Time ...

  10. C. Arcade dp二维费用背包 + 滚动数组 玄学

    http://codeforces.com/gym/101257/problem/C 询问从左上角走到右下角,每次只能向右或者向左,捡起三种物品算作一个logo,求最多能得到多少个logo. 设dp[ ...