C++ set用法以及迭代器用法
有关set的一些常用函数
1.begin() / end() 返回首/尾元素迭代器
2.rbegin() / rend() 返回尾/首元素反向迭代器,反向迭代器可以反向遍历容器的迭代器,从下面的程序已经可以看出,正常的迭代器++为顺序遍历,而反向迭代器的效果就是反向迭代器++后,可倒序遍历容器(--则相反)。
3.支持用 '=' 赋值
4.empty() 当前set是否为空
5.size() 返回set大小
6.insert() / erase() 插入/删除一个元素
7.swap() 交换两个set内所有元素
8.clear() 清空当前set
9.find(a,b,c) 返回以a,b为迭代器的区间内值为c的元素的迭代器(a,b可有可无)
10.count(a,b,c) 返回以a,b为迭代器的区间内值为c的元素的个数(a,b可有可无)
11.equal_range(a,b,c) 返回一个pair,pair.first为这个范围的下界,pair.second为这个范围的上界
https://www.luogu.org/problemnew/show/P1059
set裸题= =...
代码:
#include<algorithm>
#include<iostream>
#include<set>
#include<cstdio>
#include<vector>
using namespace std;
int main(){
set<int> num;
int a,n;
scanf("%d",&n);
for(register int i=0;i<n;++i){
scanf("%d",&a);
num.insert;(a);
}
printf("%d\n",((n=num.size())?n:n));
set<int>::iterator smax=num.end();
for(set<int>::iterator iter=num.begin();iter!=smax;++iter){
printf("%d ",*iter);
}
return 0;
}
用到了iterator ,用来输出set ;
因为set是用平衡树(红黑树)实现的,所以有序;
所以set可以伪去重,排序,但显然常数巨大,容易被卡,还是手写吧
迭代器用法:
xxxxx::iterartor name; //定义一个xxxxx域内的迭代器
*注意循环变量的用法;
C++ set用法以及迭代器用法的更多相关文章
- C++ Iterator迭代器介绍及Iterator迭代器用法代码举例
C++ Iterator迭代器介绍 迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针.举一个例子,你可用一个迭代器来实现对vector容器中所含元素的遍历.有这么几种迭代器如下: 迭代 ...
- heckboxlist详细用法、checkboxlist用法、checkboxlist
heckboxlist详细用法.checkboxlist用法.checkboxlist for (int i = 0; i < CheckBoxList1.Items.Count; i++) { ...
- Sybase:游标用法以及嵌套用法
Sybase:游标用法以及嵌套用法 游标示例一: --Sybase游标示例一: create PROCEDURE DBA.p_proc_test() ON EXCEPTION RESUME begin ...
- POJ 1230 Pass-Muraille#贪心+vector迭代器用法
(- ̄▽ ̄)-* (注意下面代码中关于iterator的用法,此代码借鉴某大牛) #include<iostream> #include<cstdio> #include< ...
- python的装饰器,迭代器用法
装饰器. 装饰器实际就是一个函数 定义:在不改变内部代码和调用方式的基础上增加新的功能 了解装饰器需要了解3个内容: 1.函数即变量 2.高阶函数 1).把一个函数名当作实参传给另一个函数 2).返回 ...
- vector迭代器用法
#include<iostream> #include<vector> using namespace std; int main() { vector<int> ...
- #define 的一些用法 以及 迭代器的 [] 与 find()函数的区别
#include "stdafx.h" #include <map> #include <string> #include <iostream> ...
- Java迭代器用法
public class Test01 { public static void main(String[] args) { List list = new ArrayList(); list.add ...
- Python中“*”和“**”的用法 || yield的用法 || ‘$in’和'$nin' || python @property的含义
一.单星号 * 采用 * 可将列表或元祖中的元素直接取出,作为随机数的上下限: import random a = [1,4] print(random.randrange(*a)) 或者for循环输 ...
随机推荐
- zabbix 批量生成聚合图形
通过插入数据库的方式批量生成 zabbix 聚合图形 原型图形 聚合的 sql 批量操作 .在聚合图形创建好一个聚合图形A.找出图形A的ID (创建图形的时候记得填写好行数和列数) select sc ...
- Android开发之深入理解Android 7.0系统权限更改相关文档
http://www.cnblogs.com/dazhao/p/6547811.html 摘要: Android 6.0之后的版本增加了运行时权限,应用程序在执行每个需要系统权限的功能时,需要添加权限 ...
- Fiddler抓包使用教程-断点调试
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/62896784 本文出自[赵彦军的博客] Fiddler 里面的断点调试有2种方式. ...
- Windows下的OpenCVSharp配置
OPenCvSharp是OpenCV的Net Warpper,应用最新的OpenCV库开发,目前放在github.. 本人认为OpenCvSharp比EmguCV使用起来更为方便,因为函数更接近于原生 ...
- JAVA中Sql时间格式与util时间格式转换
关于时间格式转化: java.util.Date 与 java.sql.Date 互换 sql是子类 字符串转化成java.util.Date SimpleDateFormat date =n ...
- longestCommonPrefix
Description: Write a function to find the longest common prefix string amongst an array of strings. ...
- java8完全解读二
继续着上次的java完全解读一 继续着上次的java完全解读一1.强大的Stream API1.1什么是Stream1.2 Stream操作的三大步骤1.2.1 创建Stream1.2.2 Strea ...
- AUTOSAR-关于配置文件的思考
基于Can: 1. Can_Cfg.h contains compile time configurations. It should be included by Can.h which is sp ...
- 分布式架构真正适用于大型互联网项目的架构! dubbo+zookeeper+springmvc+mybatis+shiro+redis
分类: 分布式技术(3) 目录(?)[+] 平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成D ...
- springboot中配置文件application.properties的理解
前言 Spring Boot使用"习惯优于配置"(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来.所以,我们要想把Sprin ...