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

    然后就没问题了。

  • 相关阅读:
    线性表单链表的实现
    线性表顺序存储结构
    【C语言】产生随机数
    TCP/IP协议
    【bfs】奇怪的电梯(P1135)
    【DFS】取数游戏(P1123)
    【DFS】圣诞夜的极光(P1454)
    【贪心】骑士的工作(P2695)
    【贪心】纪念品分组(P1094)
    生活的那么一点反思
  • 原文地址:https://www.cnblogs.com/lexus/p/2604715.html
Copyright © 2011-2022 走看看