•  

    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. Handlebars的基本用法

    使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Handlebars 强大的功能. ...

  2. 远程连接Linux

    远程连接Linux   为什么要远程连接Linux 在实际的工作场景中,虚拟机界面或者物理服务器本地的终端都是很少接触的,因为服务器装完系统之后,都要拉倒IDC机房托管,如果是购买的云主机,那更碰不到 ...

  3. html/css杂题

    1.css选择器:详细(http://www.ruanyifeng.com/blog/2009/03/css_selectors.html) 派生选择器:按标签 类别选择器:按class ID选择器: ...

  4. My SQL随记 001 常用名词/结构化语言

    DBMS (Database Management System) 字段/域(列名或者列头 如:姓名身高性别为字段) 姓名 身高 性别 小周周 157 女 记录(一行数据 如:小周周 157 女 ) ...

  5. windows环境安装MySQL

    转:https://www.cnblogs.com/ayyl/p/5978418.html windows环境安装MySQL mySQL下载链接:MySQL Installer 5.7 :http:/ ...

  6. tomcat 启动脚本走过的坑

    最近由于 程序写的问题 tomcat经常需要重启,所以就让我写给监控tomcat并启动的脚本 例: 看着一起正常 然后就写到 crontab 计划任务里了 后来发现不管用, 找了好多文档 就是找不到问 ...

  7. nginx的变量参数 详解

    $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为 ...

  8. apache kylin总结

    去年12月挖的坑,今天找时间填上.update:20190119 一.kylin架构 核心是预计算,在此架构上做了一些优化.计算结果存储在Hbase,对Hive等查询转换为Hbase的Scan,提高速 ...

  9. 【leetcode】429. N-ary Tree Level Order Traversal

    problem 429. N-ary Tree Level Order Traversal solution1:Iteration /* // Definition for a Node. class ...

  10. 桥接模式-pattern系列

    git链接 桥接模式 桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化".这句话有三个关键词,也就是抽象化. ...