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));

    然后就没问题了。

  • 相关阅读:
    Codeforces 525C Om Nom and Candies 枚举 + 复杂度分析
    Codeforces 526B Om Nom and Dark Park 树形dp
    Codeforces 526A King of Thieves 枚举
    Regionals 2014 Asia
    Regionals 2014 Asia
    access数据库和sqlsever数据库sql语句的布尔值boolean的写法
    取消阴影行
    引用其他单元的2种方法
    选中阴影行
    全选
  • 原文地址:https://www.cnblogs.com/lexus/p/2604715.html
Copyright © 2011-2022 走看看