您的位置:首页 > 其它

MAP--复杂map结构的构造

2013-10-21 15:11 183 查看
我的关键结构比如

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: