MAP--复杂map结构的构造

来源:互联网 发布:剑灵数据库下载 编辑:程序博客网 时间:2024/06/05 09:23

我的关键结构比如
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

原创粉丝点击