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集合容器的更多相关文章

  1. 【STL】 set集合容器常用用法

    set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...

  2. Java集合容器简介

    Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...

  3. C++ STL set集合容器

    汇总了一些set的常用语句,部分参考了这篇:http://blog.163.com/jackie_howe/blog/static/199491347201231691525484/ #include ...

  4. STL中的set集合容器进行集合运算:并、交、差实例

    集合容器的集合运算:并.交.差: #include "stdafx.h" #include <iostream> #include <set> #inclu ...

  5. python 标准类库-数据类型之集合-容器数据类型

    标准类库-数据类型之集合-容器数据类型   by:授客 QQ:1033553122 Counter对象 例子 >>> from collections import Counter ...

  6. JAVA中的集合容器操作类

    目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...

  7. multiset多重集合容器(常用的使用方法总结)

    关于C++STL中multiset集合容器的学习,看别人的代码一百遍,不如自己动手写一遍. multiset多重集合容器和set集合容器的使用方法大多相同,不同的是multiset多重集合容器允许重复 ...

  8. set集合容器(常用的使用方法总结)

     关于C++STL中set集合容器的学习,看别人的代码一百遍,不如自己动手写一遍. 构造set集合容器的目的是为了去重+排序+快速搜索.由于set集合容器实现了红黑树多的平衡二叉检索树的数据结构,在插 ...

  9. STL之set集合容器 【转】

    set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点的键 ...

随机推荐

  1. oracle 字段类型详解

    CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749 NCHAR 根据字符集而定的固定长度字符串 最大长度 ...

  2. Date 和 SimpleDateFormat 类表示时间

    Date now=new Date(); // 使用format()方法将日期转换为指定格式的文本 SimpleDateFormat sdf1 = new SimpleDateFormat(" ...

  3. Python学习笔记_Chapter 7web开发

    1.web应用元素 a.成员: web浏览器 web服务器 b.行为: web请求: 请求内容: 静态内容:如html文件,图像. 动态内容:需服务器运行一个程序进而做出响应. 网关接口&CG ...

  4. 深入理解Java内存模型 - volatile

    volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这 ...

  5. C# 语言规范_版本5.0 (第1章 介绍)

    1. 介绍 C#(读作“See Sharp”)是一种简洁.现代.面向对象且类型安全的编程语言.C# 起源于 C 语言家族,因此,对于 C.C++ 和 Java 程序员,可以很快熟悉这种新的语言.C# ...

  6. Dash:程序员的好帮手

    Dash 关于Dash是什么.有哪些功能以及该怎么使用,我想直接引用咖啡 生活 美女蛇,这位小伙伴整理的很详细,我这里只说一下Dash的破解方法. 破解 破解补丁下载:Dash3.x_Cracked ...

  7. wpf之ListBox中ListBoxItem横向排列

    ListBox中ListBoxItem默认是纵向排列,可以通过自定义样式,让其横向排列, 如下Demo: XAML: <Window x:Class="ListBoxItemStyle ...

  8. usbmanger android 底下USB的工作模式

    Android USB开发麻烦还是比较多的. 第一种:host模式 这种模式比较不错,由Android设备提供电源,然后与外部设备通信.举个例子来说:电脑连接USB设备,都是这个模式,非常常见的模式. ...

  9. 1.Perl 多线程:Threads

    详情可查看: perldoc threads 调用线程的方法: $thr = threads->create(FUNCTION, ARGS) #This will create a new th ...

  10. APP生产流程图片解说

    尽我所能总结下一个app的生产过程,未必完整,也未必是所有的app产生的一个过程,不同公司会有很大的不同,我只是想总结下一般的大众的,做个参考. 需求策划: 设计: 开发: 测试: 发布没什么可画的了 ...