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循环输 ...
随机推荐
- happens-before规则和指令重排
...
- 解决XMind运行卡顿
问题 XMind是一款很好用的脑图工具,它是基于eclipse开发的,而且基础功能是免费的.最近我安装了XMind 8 Pro,但是发现在Mac上运行有卡顿. 解决方式 解决这个问题的思路也很简单,软 ...
- 转:<mvc:annotation-driven/>的注解意义
<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案.<mvc:annotation-dri ...
- Linux 下常用的Shell 命令
英文原文链接:https://www.lopezferrando.com/30-interesting-shell-commands/ 1. 监控命令(每2秒运行一次) watch "ls ...
- python---内置模块
时间模块 时间分为三种类型:时间戳,结构化时间,格式化时间 #时间模块,time import time #时间戳 x = time.time() time.gmtime() #将时间戳转换成UTC时 ...
- Ocelot中文文档-微服务ServiceFabric
如果您在Service Fabric中部署了服务,则通常会使用命名服务来访问它们. 以下示例展示如何设置一个ReRoute以便在在Service Fabric中工作. 最重要的是ServiceName ...
- [译文]Domain Driven Design Reference(一)—— 前言
本书是Eric Evans对他自己写的<领域驱动设计-软件核心复杂性应对之道>的一本字典式的参考书,可用于快速查找<领域驱动设计>中的诸多概念及其简明解释. DDD到目前为止知 ...
- MQTT入手笔记
MQTT服务官网:http://mosquitto.org/download/ 在unix系统按照以下步骤运行并启动mqtt服务: 1. # 下载源代码包wget http://mosquitto.o ...
- C#文件和字节流的转换方法
1.读取文件,并转换为字节流 FileStream fs = new FileStream(filename,FileMode.Open,FileAccess.Read); byte[] infbyt ...
- Flask入门之上传文件到服务器
今天要做一个简单的页面,可以实现将文件 上传到服务器(保存在指定文件夹) #Sample.py # coding:utf-8 from flask import Flask,render_templa ...