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. vue 相对其他热门 框架 优点 --- 待续

    react vs  vue 1. 处理动画 vue 更有优势 , 这是由于 React 有大量的检查机制 2.性能更高, 在React中,你需要在每个地方去实现 shouldComponentUpda ...

  2. jQuery(6)——jQuery对表单、表格的操作及更多应用

    jQuery对表单.表格的操作及更多应用 [表单应用] 一个表单有表单标签.表单域及表单按钮三个基本部分. 单行文本框应用:获取和失去焦点改变样式. 也可以用CSS中的伪类选择符来实现,但是IE6并不 ...

  3. 完全删除Postgresql

    First: If your install isn't already damaged, you can drop unwanted PostgreSQL servers ("cluste ...

  4. Android原生Cling演化的覆盖层

    package com.example.demotest; import android.content.Context; import android.graphics.Paint; import ...

  5. System.Diagnostics.Process 执行.EXE

    分类:  C#+WINFORM 2009-04-05 21:09 459人阅读 评论(0)  收藏  举报  我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打 ...

  6. openstack私有云布署实践【12.1 网络Neutron-controller节点配置(科兴环境)】

    网络这一块推荐使用的是 Neutron--LinuxBirdge的Ha高可用,此高可用方案对Public作用不是很大,Public只用到DHCP,而Private则会用到L3 Agent,则此方案是有 ...

  7. CodeForces 703B Mishka and trip

    简单题. 先把环上的贡献都计算好.然后再计算每一个$capital$ $city$额外做出的贡献值. 假设$A$城市为$capital$ $city$,那么$A$城市做出的额外贡献:$A$城市左边城市 ...

  8. B-number

    B-number 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3652 数位dp 这题是暑期集训的时候做的,昨天补了数位dp的记忆化搜索做法,把艾神的 ...

  9. struts2防止重复提交的标签

    struts2 token 使用说明 --------------------------------------------------------------------------------- ...

  10. “this”总结

    this 的几种情况: function a(){ alert(this); } 1.直接调用a()时,this指的是window对象. 2.对象调用 var obj = { a : a}obj.a( ...