我的关键结构比如
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(),"" ) );