•  

    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. css颜色的五种表示方法

    一.最简单.最古老的颜色类型在CSS颜色的关键词,如red blue等. 二.十六进制值,如#0000. 三.RGB: rgb(255,0,0),这是给定的三个参数表示的红色,绿色和蓝色通道的颜色值每 ...

  2. Linux之expr命令详解

    expr命令: expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串. –格式为: expr Expression(命令读入Expressi ...

  3. mvn package

    mvn -B -DskipTests clean package -Dspecific -P test mvn -B -DskipTests clean package -Dspecific -P p ...

  4. 截取URL链接中字段的方法

    第一个页面像第二个页面传参方法 location.href = "poster.html?" + "name=" + name + "&tim ...

  5. FCC JS基础算法题(3):Find the Longest Word in a String (找出最长单词)

    题目描述: 在句子中找出最长的单词,并返回它的长度.函数的返回值应该是一个数字. 基本思路,将字符串转换成数组,然后得出数组中单个元素的长度,对长度进行排序,返回最大的一个 代码: function ...

  6. webapp 安卓 ios 兼容性问题

    1.ios js中时间不兼容YYYY-MM-DD这种格式的时间,只支持YYYY/MM/DD这种格式 // 在safari中new Date('2018-09-02') // Invalid Daten ...

  7. JAVA将汉字转换为全拼以及返回中文的首字母,将字符串转移为ASCII码

    import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseT ...

  8. nginx配置socket服务

    1.服务器环境:centos7.5 2.安装nginx 首先下载:wget http://nginx.org/download/nginx-1.14.0.tar.gz 解压:tar zxvf  ngi ...

  9. 实现两个矩阵相乘的C语言程序

    程序功能:实现两个矩阵相乘的C语言程序,并将其输出 代码如下: #include "stdafx.h" #include "windows.h" void Mu ...

  10. yii2 获取模块名、控制器名、方法名

    在视图中: 模块名  $this->context->module->id控制器名 $this->context->id方法名 $this->context-> ...