#include <set>
1 multiset
多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>
2 set
集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>
1 count
统计数量
2 equal_range(const T&);找到红黑树的链表结点,遍历所有的元素
3 find();查找元素
4 insert(const T&);插入
5 size();返回当前向量中已经存放的对象的个数
1 multiset
多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>
#include <iostream>
#include <set> int main()
{
std::multiset<int>myset; myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();//和set不同,元素可以重复 auto ib = myset.begin();
auto ie = myset.end(); for (; ib != ie; ib++)
{
std::cout << *ib << std::endl;
printf("%p,%p\n", ib._Ptr, ib);//智能指针
} return ;
}
multiset每一个结点都是一个链表,set每个结点是一个结点而已
#include <iostream>
#include <set> struct student
{
int id;
char name[];
}; struct stuless
{
bool operator()(const student &s1, const student &s2)//重载()
{
return s1.id < s2.id;
}
}; int main()
{
student sarray[] = { {,"hello"},{ ,"world" },{ ,"hello world" } };
std::multiset<student, stuless>myset(sarray, sarray + , stuless());//multiset每一个结点都是一个链表,set每个结点是一个结点而已 student stu1 = { ,"world hello" }; myset.insert(stu1);//插入 auto ib = myset.begin();
auto ie = myset.end(); for (; ib != ie; ib++)
{
std::cout << ib->id << " " << ib->name << std::endl;
} return ;
}
multiset的元素可以重复,因此equal_range(const T&);可以实现查找多个相同的元素
#include <iostream>
#include <set> void main()
{
std::multiset<int>myset; myset.insert();//插入
myset.insert();
myset.insert();
myset.insert();
myset.insert(); auto pfind = myset.find();//find只查找一个元素
std::cout << *pfind << std::endl << std::endl; auto allfind = myset.equal_range();//equal_range找到红黑树的链表结点,遍历所有的元素 for (auto it = allfind.first; it != allfind.second; it++)//first是链表的头结点,second是最后一个空结点
{
std::cout << *it << std::endl;
}
}
count
1 #include <iostream>
2 #include <set>
3
4 void main()
5 {
6 std::multiset<int>myset;
7
8 myset.insert(3);
9 myset.insert(1);
10 myset.insert(2);
11 myset.insert(1);
12 myset.insert(2);
13 myset.insert(1);
14 myset.insert(2);
15 myset.insert(1);
16
17 int i = 0;
18 for (auto ib = myset.begin(), ie = myset.end(); ib != ie; ib++)
19 {
20 i++;
21 }
22
23 std::cout << i << std::endl;//打印结点数量
24
25 std::cout << count(myset.begin(), myset.end(), 1);//打印结点元素是1的数量
26 }
multiset可以自动排序
#include <iostream>
#include <algorithm>
#include <set> template <class T>
struct show
{
public:
void operator()(T &t)
{
std::cout << t << " ";
}
}; void main()
{
std::multiset<int>myset; myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert(); for_each(myset.begin(), myset.end(), show<const int>());
}
2 set
集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>
find();查找元素
size();返回当前向量中已经存放的对象的个数
#include <iostream>
#include <set> void main()
{
std::set<int>myset;//红黑树 myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();//如果插入的元素已经存在,将会放弃插入 auto ib = myset.begin();
auto ie = myset.end(); for (; ib != ie; ib++)//即使插入的顺序是乱序,但是也会按从小到大的顺序输出
{
std::cout << *ib << std::endl;
}
}
find查找元素
#include <iostream>
#include <set> void main()
{
std::set<int>myset;//红黑树 myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert(); auto findpos = myset.find(); std::cout << *findpos << std::endl;
}
size();返回当前向量中已经存放的对象的个数
#include <iostream>
#include <set> void main()
{
std::set<int>myset;//红黑树 myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();
myset.insert();//如果插入的元素已经存在,将会放弃插入 std::cout << myset.size() << std::endl;//返回当前向量中已经存放的对象的个数
}
红黑树,处理纯数字非常少,处理类对象以及字符串
pari起到获取插入返回值,第一个类型,类型比大小的方式
#include <iostream>
#include <set>
#include <string> struct strless
{
bool operator()(const char *str1, const char *str2)//重载()
{
return strcmp(str1, str2) < ;
}
}; //红黑树,处理纯数字非常少,处理类对象以及字符串 int main()
{
const char *cmd[] = { "abc", "calc", "notepad", "const", "xyz", "ghi" }; std::set<const char *, strless>myset(cmd, cmd + , strless());//构造
myset.insert("");//插入
myset.insert(""); std::pair<std::set<const char *>::iterator, bool>p = myset.insert("");//pari起到获取插入返回值,第一个类型,类型比大小的方式 auto ib = myset.begin();
auto ie = myset.end(); for (; ib != ie; ib++)//迭代器访问
{
std::cout << *ib << std::endl;
}
std::cout << std::endl; auto rb = myset.rbegin();
auto re = myset.rend(); for (; rb != re; rb++)//反向迭代器访问
{
std::cout << *rb << std::endl;
}
std::cout << std::endl; std::set<const char *, strless>::iterator pfind = myset.find("calc");//查找
std::cout << *pfind << std::endl; return ;
}
#include <set>的更多相关文章
- 浅谈JSP中include指令与include动作标识的区别
JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...
- Entity Framework 6 Recipes 2nd Edition(13-9)译 -> 避免Include
问题 你想不用Include()方法,立即加载一下相关的集合,并想通过EF的CodeFirst方式实现. 解决方案 假设你有一个如Figure 13-14所示的模型: Figure 13-14. A ...
- error RC1015: cannot open include file 'afxres.h' 解决办法
在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...
- Mybatis常用总结:参数,返回,执行sql,include等
1.参数注入1.1用#{0},#{1}的形式,0代表第一个参数,1代表第二个参数 public List<RecordVo> queryList(String workerId, Inte ...
- jsp中的@include与jsp:include区别详解
1 前言 搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式 <%@include file="xxx.jsp"%> <jsp:include ...
- JSP中编译指令include与动作指令include的区别
include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改, 否则视为已被修改.由于被包含的文件是在编译时才插入的,因此如 ...
- C/C++ 中的include
当需要使用已有的方法或库时, 可以将它们的头文件#include进来. #include会在preprocess过程中被替换成它包含的代码. 头文件中包含了需要使用的函数/变量的声明. 当然声明与定义 ...
- 织梦多语言站点,{dede:include filename=''/}引入问题
织梦模板include插入非模板目录文件出现"无法在这个位置找到"错误的解决办法 以下是dede V55_UTF8 查dede include标签手册 (3) include 引入 ...
- PHP 站点相对包含,路径的问题解决方法(include,require)
以前看了,很多框架,基本上很少使用相对路径包含.而一般很多做php web站点,喜欢用相对路径. 认为这样,无论目录放到那里. 只要跟另外目录关系一致.那么就不会出现问题.如果一个站点,一般都认为,如 ...
- 如何让include标签包裹的布局置于屏幕最下方?
如何让一个Layout 始终在屏幕的下方 我想让<include layout="@layout/bottom" />一直在屏幕下,怎么做? 1.相对布局中用属性 a ...
随机推荐
- [转]Activemq管理和基本介绍
1.ActiveMQ服务器工作模型 通过ActiveMQ消息服务交换消息.消息生产者将消息发送至消息服务,消息消费者则从消息服务接收这些消息.这些消息传送操作是使用一组实现 ActiveM ...
- hdu 2438 Turn the corner(几何+三分)
Problem Description Mr. West bought a new car! So he is travelling around the city. One day he comes ...
- [Java Web]Struts2解决中文乱码问题
1.设置struts的字符编码,能够在struts.xml中添加下面代码: <constant name="struts.i18n.encoding" value=" ...
- C++中如何建立一个顺序表
准备数据 #define MAXLEN 100 //定义顺序表的最大长度 struct DATA { char key[10]; //结点的关键字 char name[20]; int age; }; ...
- iOS蓝牙4.0开发例子
1建立中心角色 1 2 3 #import <CoreBluetooth/CoreBluetooth.h> CBCentralManager *manager; manager = [ ...
- 搭建高可用mongodb集群—— 分片
从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出 ...
- WebService调用1(.Net)
1.创建一个最简单的Web Service (1) 新建-项目-ASP.NET空WEB应用程序 (2)添加新项-WEB服务 默认会添加一个HelloWorld方法: using System; us ...
- UIImageView~动画播放的内存优化
我目前学到的知识,播放动画的步骤就是下面的几个步骤,把照片资源放到数组里面,通过动画animationImage加载数组,设置动画播放的 时间和次数完成播放. 后来通过看一些视频了解到:当需要播放多个 ...
- C#调用WebService实例和开发(转)
1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...
- jquery.form上传文件
建立test文件夹 PHP代码: <?php //var_dump($_FILES['file']);exit; if(isset($_GET['option']) && $_G ...