•  

    std::set

    • 不重复key
    • 默认less排序
    • 代码
      • #include <iostream>
        #include <set> class Person
        {
        public:
        Person(const std::string& name, const std::size_t nld)
        {
        Name = name;
        Nid = nld;
        } const std::string& GetName() const
        {
        return Name;
        } const void SetId()
        {
        Nid++;
        } const std::size_t GetId() const
        {
        return Nid;
        }
        private:
        std::string Name;
        std::size_t Nid;
        };
        //仿函数
        struct PersonIdComparer: public std::binary_function<Person, Person, bool>
        {
        bool operator()(const Person& p1, const Person& p2) const
        {
        return (p1.GetId() < p2.GetId()) ? true : false;
        }
        }; struct PersonNameComparer: public std::binary_function<Person, Person, bool>
        {
        bool operator()(const Person& p1, const Person& p2) const
        {
        return (p1.GetName() < p2.GetName()) ? true : false;
        }
        };
        int main()
        {
        const std::size_t nSize = 3;
        const Person personArray[nSize] =
        {
        Person("Tom", 1),
        Person("Jason", 2),
        Person("Alice", 3)
        }; std::set<Person,PersonIdComparer> ps1(personArray, personArray + nSize); //插入元素
        ps1.insert(Person("Bill",4)); //删除元素
        std::set<Person, PersonIdComparer>::iterator it = ps1.begin();
        std::advance(it, 1);
        ps1.erase(it); for(it = ps1.begin(); it != ps1.end(); ++it)
        {
        const_cast<Person&>(*it).SetId();
        std::cout<<"Id:"<<(*it).GetId()<<"Name:"<<(*it).GetName()<<std::endl;
        }
        return 0;
        }

          

    • set相关算法
      • set_union
      • set_intersection
      • set_difference
  • set不允许通过直接迭代器改变成员
    • const_cast<Person&>(*it).SetId();//必须使用引用,否则只能修改临时变量
      

        

std::set的更多相关文章

  1. 【NX二次开发】NX内部函数,libuifw.dll文件中的内部函数

    本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: void U ...

  2. C++ std::set

    std::set template < class T, // set::key_type/value_type class Compare = less<T>, // set::k ...

  3. C++ std::priority_queue

    std::priority_queue template <class T, class Container = vector<T>, class Compare = less< ...

  4. C++ std::queue

    std::queue template <class T, class Container = deque<T> > class queue; FIFO queue queue ...

  5. C++ std::multimap

    std::multimap template < class Key, // multimap::key_type class T, // multimap::mapped_type class ...

  6. C++ std::map

    std::map template < class Key, // map::key_type class T, // map::mapped_type class Compare = less ...

  7. C++ std::list

    std::list template < class T, class Alloc = allocator > class list; List Lists are sequence co ...

  8. C++ std::forward_list

    std::forward_list template < class T, class Alloc = allocator > class forward_list; Forward li ...

  9. C++ std::deque

    std::deque template < class T, class Alloc = allocator > class deque; Double ended queue deque ...

  10. C++ std::array

    std::array template < class T, size_t N > class array; Code Example #include <iostream> ...

随机推荐

  1. 数组去重复的时候遇到length变成1 的bug

    arrUnique:function(arr){ //传入空数组的时候有bug,length会变成1 所以修复下 if(arr.length == 0){ return []; } arr.sort( ...

  2. C++解析十-数据封装

    数据封装 所有的 C++ 程序都有以下两个基本要素: 程序语句(代码):这是程序中执行动作的部分,它们被称为函数. 程序数据:数据是程序的信息,会受到程序函数的影响.封装是面向对象编程中把数据和操作数 ...

  3. 201621123075作业07-Java GUI编程

    1. 本周学习总结 1.1 思维导图:Java图形界面总结 1.2 可选:使用常规方法总结其他上课内容. 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 事件源 ...

  4. 前端表单验证常用的15个JS正则表达式

    在表单验证中,使用正则表达式来验证正确与否是一个很频繁的操作,本文收集整理了15个常用的javaScript正则表达式,其中包括用户名.密码强度.整数.数字.电子邮件地址(Email).手机号码.身份 ...

  5. ui自动化:python+appium----环境搭建

    前言: appium可以说是app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本支持java和python.以下为python+appium的安装教程... 环境准备... ...

  6. MFC VC++获取当前程序的运行路径

    ]; GetModuleFileName(, szDir, ); int i; i = lstrlen(szDir) - ; ) { if(szDir[i] == _T('\\')) { szDir[ ...

  7. linux c 输出信息到console

    static void console_log(const char *format, ...) { static FILE *fpConsole; if (fpConsole == NULL) { ...

  8. datePecker时间控件区间写法

    成交时间: <input type="text" onclick="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'#F{$d ...

  9. 20155208徐子涵《网络对抗》Exp2 后门原理与实践

    20155208徐子涵<网络对抗>Exp2 后门原理与实践 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 答:当我们在非官方网站上下载软件时,后门极有可能会进入我们 ...

  10. “轻量级JavaEE”之新学期目标

    我以后的职业目标是做一名Java开发工程师.之前学了一些JAVA的基础知识,也学了一些C,但以现在的知识储备和实战能力是不能胜任企业开发实战的要求的,所以这门“轻量级JavaEE企业应用实战”对我的提 ...