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

  • 相关阅读:
    vim复制
    嵌入式Linux学习(二)
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1025 数的划分
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
  • 原文地址:https://www.cnblogs.com/catkins/p/5270557.html
Copyright © 2011-2022 走看看