set集合容器
set集合容器几条特点
1.它不会重复插入相同键值的元素,而采取忽略处理
2.使用中序遍历算法,检索效率高于vector、deque、list容器,在插入元素时,会自动将元素按键值从小到大排列
3.set容器的主要目的就是快速检索
4.在#include<set>头文件中
#include<iostream>
#include<set>
using namespace std;
struct mycomp//自定义比较函数,为啥是结构体类型呢?
{
bool operator()(const int &a,const int &b)
{
if(a!=b)
return a>b;
else
return a>b;
}
} ;
int main()
{
set<int> s;//set容器定义;
s.insert(8);//元素插入
s.insert(1);
s.insert(3);
s.insert(12);
set<int>::iterator it;//定义迭代器
for(it=s.begin();it!=s.end();it++)
cout<<*it<<" ";
cout<<endl;
set<int>::reverse_iterator rit;//定义反向迭代器
for(rit=s.rbegin();rit!=s.rend();rit++)
cout<<*rit<<" ";
cout<<endl;
s.erase(3);//删除键值为3的元素;
for(it=s.begin();it!=s.end();it++)
cout<<*it<<" ";
cout<<endl;
s.clear();//清空容器;
s.insert(8);//元素插入
s.insert(1);
s.insert(3);
s.insert(12);
cout<<s.size()<<endl;
it=s.find(12);//查找容器中的元素,若找到则返回迭代器的位置,若找不到则返回end(),即集合最后一个元素后一个位置。
if(it!=s.end())
cout<<*it<<endl;
else
cout<<"not find it"<<endl;
set<int,mycomp> a;//自定义比较函数;
a.insert(8);
a.insert(9);
a.insert(12);
set<int,mycomp>::iterator itt;//定义迭代器时要加上比较函数;
for(itt=a.begin();itt!=a.end();itt++)
cout<<*itt<<" ";
cout<<endl;
return 0;
}
自定义比较函数为什么是结构体类型,目前还不明白
set集合容器的更多相关文章
- 【STL】 set集合容器常用用法
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...
- Java集合容器简介
Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...
- C++ STL set集合容器
汇总了一些set的常用语句,部分参考了这篇:http://blog.163.com/jackie_howe/blog/static/199491347201231691525484/ #include ...
- STL中的set集合容器进行集合运算:并、交、差实例
集合容器的集合运算:并.交.差: #include "stdafx.h" #include <iostream> #include <set> #inclu ...
- python 标准类库-数据类型之集合-容器数据类型
标准类库-数据类型之集合-容器数据类型 by:授客 QQ:1033553122 Counter对象 例子 >>> from collections import Counter ...
- JAVA中的集合容器操作类
目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...
- multiset多重集合容器(常用的使用方法总结)
关于C++STL中multiset集合容器的学习,看别人的代码一百遍,不如自己动手写一遍. multiset多重集合容器和set集合容器的使用方法大多相同,不同的是multiset多重集合容器允许重复 ...
- set集合容器(常用的使用方法总结)
关于C++STL中set集合容器的学习,看别人的代码一百遍,不如自己动手写一遍. 构造set集合容器的目的是为了去重+排序+快速搜索.由于set集合容器实现了红黑树多的平衡二叉检索树的数据结构,在插 ...
- STL之set集合容器 【转】
set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点的键 ...
随机推荐
- SSH整合例子
三大框架: Struts框架 1. params拦截器: 请求数据封装 2. 类型转换/数据处理 3. struts配置 4. 文件上传/下载/国际化处理 5. 数据效验/拦截器 6. Ognl表达式 ...
- cuda8.0 /usr/bin/ld: cannot find -lGL
/usr/bin/ld: cannot find -lGL collect2: ld returned 1 exit status tennycent@tennycent-desktop:~/$ ...
- 解决 GoogleApi 无法访问的问题
因为 google 被天朝屏蔽,所以很多运用了 fonts.googleapis 的网站都打开很慢,会直到加载 fonts.googleapis 超时才能打开网页. 在本地开发时,可以引用国内的CDN ...
- LINQ 查询集合总的重复项
select new FMDS_FarmPlotNewInfo { FarmPlo ...
- 2016 Technology
rem 62.5%在chrome谷歌和其他浏览器不一样 http://www.5imoban.net/jiaocheng/div+css/201512191529.html http://blog.c ...
- 3-jQuery - AJAX get()
介绍 GET 基本上用于从服务器获得(取回)数据.注释:GET 方法可能返回缓存数据. 格式 $.get(URL,callback); //必需的 URL 参数规定您希望请求的 URL. //可选的 ...
- C# Monads的实现(二)
再谈continuation monad 上一篇中我们已经介绍了continuation monad,但是这个monad与Identity,Maybe,IEnumerable monads稍微难于理解 ...
- Gentoo挂载ntfs的NTFS分区
内核需要开启的选项 File systems ---> <*> FUSE (Filesystem in Userspace) support 使用NTFS-3G NTFS-3G是一个 ...
- jquery选择器的简单使用
1.$()可以是$(expresion),即css选择器.Xpath或html元素,也就是通过上述表达式来匹配目标元素. 比如:$("a")构造的这个对象,是用CSS选择器构建了一 ...
- Linux通过XAMPP集成软件包搭建LAMPP环境
前面介绍过一篇“Linux手动搭建LAMP环境”,今天再来整理一篇“Linux通过XAMPP集成软件包搭建LAMPP环境”. 其实当初整理通过XAMPP集成软件包搭建LAMPP环境的原因是这样的: 自 ...