zoukankan      html  css  js  c++  java
  • STL set复杂类型操作 比特·罗伯特 博客园

    STL set复杂类型操作 - 比特·罗伯特 - 博客园

    STL set复杂类型操作

    以前用set的时候总是小打小闹,参数类型基本是string,int,后来遇到需要用类和结构体做参数的,如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class CStudent
    {
    public :
     int nStudentID;
     int nAge;
    public :
     //缺省构造函数——通常为空
     CStudent() { }
     // 完整的构造函数
     CStudent(int nSID, int nA) { nStudentID=nSID; nAge=nA; }
    };
     
    set <CStudent> mapStudent;
    mapStudent.insert(CStudent(100232,42));

    然后就是一堆问题....

    后来试了好久发觉类有一定的要求,STL作为一个容器只是在调用相应的方法,set的基本要求应该是拷贝构造函数,赋值运算符重载,大于小于运算符重载,如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    class CStudent
    {
    public :
        int nStudentID;
        int nAge;
    public :
        //缺省构造函数——通常为空
        CStudent() { }
        // 完整的构造函数
        CStudent(int nSID, int nA) { nStudentID=nSID; nAge=nA; }
        //拷贝构造函数
        CStudent(const CStudent& ob)
        {
            nStudentID=ob.nStudentID; nAge=ob.nAge;
        }
        // 重载“=”
        void operator = (const CStudent& ob)
        {
            nStudentID=ob.nStudentID; nAge=ob.nAge;
        }
        bool operator < (const CStudent& ob) const
        {
            return nStudentID<ob.nStudentID;
        }
        bool operator >(const CStudent& ob)
        {
            return nStudentID>ob.nStudentID;
        }
     
     
    };
     
    set <CStudent> mapStudent;
    mapStudent.insert(CStudent(100232,42));

    然后就没问题了。

  • 相关阅读:
    php的rabbitmq扩展(未测试)
    rabbitmq安装
    windows操作系统安装jdk以及配置环境变量
    chrome设置user-agent
    pycharm中快捷键ctrl+c,ctrl+v,ctrl+f失效问题解决
    chrome设置user agent
    Pycharm鼠标滚动控制字体大小
    mouse事件实现可拖拽的div
    DOM事件委托
    !heap 手动查询内存泄漏
  • 原文地址:https://www.cnblogs.com/lexus/p/2604715.html
Copyright © 2011-2022 走看看