•  

    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. Vue解决同一页面跳转页面不更新

    问题分析:路由之间的切换,其实就是组件之间的切换,不是真正的页面切换.这也会导致一个问题,就是引用相同组件的时候,会导致该组件无法更新. 方案一:使用 watch 进行监听 watch: { /* = ...

  2. plsql中文乱码问题

    问题: 打开 plsql,执行 sql 语句,中文显示乱码: 解决方案: 1)输入 sql 语句 select userenv('language') from dual 查看数据库字符集 ​ 输出结 ...

  3. mpvue 转小程序实践总结

    介绍 Mpvue 是一个使用 Vue.js 开发小程序的前端框架.  基础介绍 框架基于 Vue.js 核心,修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序 ...

  4. MFC无闪烁隐藏窗口

    今天需要用到将窗口的程序隐藏,但是如果在OnInitDialog()中,直接写: ShowWindow(SW_HIDE); 是无效的,因为这本身就是个初始化窗口函数.也就是说,窗口在并没有显示出来的时 ...

  5. 利用htmlparser读取html文档的内容

    1.添加相关的的jar htmlparser-2.1.jar 2.方法和代码 public static String readHtml(File html) { String htmlPath = ...

  6. 自动化测试-8.selenium操作元素之键盘和鼠标事件

    前言 在前面的几篇中重点介绍了一些元素的定位方法,定位到元素后,接下来就是需要操作元素了.本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件 有些web界面的选项菜单需要鼠标悬停在某个元素 ...

  7. Spark访问Hive表

    知识点1:Spark访问HIVE上面的数据 配置注意点:. 1.拷贝mysql-connector-java-5.1.38-bin.jar等相关的jar包到你${spark_home}/lib中(sp ...

  8. 编写 python 小程序,将LOL官网的皮肤保存下来,上传百度云,记录那些强撸灰飞烟灭的日子

    to 撸的血泪史:大学四年几乎都在宿舍打撸,So,把官网的皮肤都保存下来,存到百度云,就当一种纪念 编辑器:pycharm 用到的包:urllib.request, requests, json, r ...

  9. JAVA第八次作业

    JAVA第八次作业 (一)学习总结 1.用思维导图对本周的学习内容进行总结 参考资料: XMind. 2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery ...

  10. Deploy Descriptor

    之前我们在编写HelloWorld项目时,在WEB-INF目录下创建了一个web.xml文件.这个文件叫做部署描述文件,每个Servlet应用程序的部署描述文件的名称都是web.xml.Web容器在启 ...