zoukankan      html  css  js  c++  java
  • MAP--复杂map结构的构造

    我的关键结构比如
    struct{
        int a;
        int b;
        int c;
    }s;
    因为这三个数据是基本信息,可以唯一区别一个设备。拿这样一个数据结构作为索引就能找到每个设备。

    我现在想这么用
    map<s, string>

    因为map是二叉树,好像没法拿结构体比较大小,去索引,所以把结构体s改成类,重载小于号,让他能比较大小。
    class s
    {
    public:
        int a;
        int b;
        int c;
        s(int m, int d, int u){a=m;b=d;c=u;}
        bool operator < (const s &other)
        {
            if ((a<other.a) ||
               ((a==other.a)&&(b<other.b)) ||
               ((a==other.a)&&(b==other.b)&&(c<other.c)))
            {
                 return true;
             }
             return false;
        }
    };

    然后,
    map<s, string> w;
    s s1;
    string s2;
    一旦执行w.insert(make_pair(s1, s2));只要有这行就立刻报错。
    要想使用一个类似结构体的数据结构作为KEY到底要怎么做呀?
    是不是光重载一个小于号不够呀?
    我现在好糊涂。有没有简单办法?


    1.1 


    struct s {
        int a;
        int b;
        int c;
        bool operator<(const s&) const { return true; }
    };

    map<s,string> m;
    m.insert( make_pair(s(),"") );


    1.2

    struct s {
        int a;
        int b;
        int c;
    };

    bool operator<(const s&,const s&) { return true; }

    map<s,string> m;
    m.insert( make_pair(s(),"") );


    2.
    struct s {
        int a;
        int b;
        int c;
    };

    struct cmp {
        bool operator()(const s&,const s&) const { return true; }
    };

    map<s,string,cmp> m;

    m.insert(make_pair(s(),"" ) );


    转载自:http://bbs.chinaunix.net/thread-1538318-1-1.html

  • 相关阅读:
    用EnumDisplaySettings获取显示设置信息
    关于同一线程中临界区编程的
    HGE初始化状态设置
    Delphi 在ListView中添加一个进度条
    WM_NCCALCSIZE消息处理详解
    Delphi操作系统菜单
    C语言I博客作业03
    C语言I博客作业05
    大一第一周作业
    C语言I博客作业02
  • 原文地址:https://www.cnblogs.com/catkins/p/5270557.html
Copyright © 2011-2022 走看看