bool operator == (const method &left , const method &right)
{ if (left.m.size() != right.m.size())
return false;
for (int i=0 ; i<right.m.size() ; i++)
{
if (left.m[i] != right.m[i])
{
return false;
}
}
return false;
}这是我程序的一部分,为什么不起作用了。我改成以下部分也不起作用我应该怎么写??
bool operator == (const method &left , const method &right)
{
return false;
}或
bool operator == (const method &left , const method &right)
{ return true;}
{ if (left.m.size() != right.m.size())
return false;
for (int i=0 ; i<right.m.size() ; i++)
{
if (left.m[i] != right.m[i])
{
return false;
}
}
return false;
}这是我程序的一部分,为什么不起作用了。我改成以下部分也不起作用我应该怎么写??
bool operator == (const method &left , const method &right)
{
return false;
}或
bool operator == (const method &left , const method &right)
{ return true;}
{
public:
vector<int> m; bool operator()(method &r)
{
for (int i=0 ; i<m.size() ; i++)
{
if (m[i] > r.m[i])
{
return false;
}
}
return true;
}
bool operator == ( const method &right)
{
if (m.size() != right.m.size())
return false;
for (int i=0 ; i<right.m.size() ; i++)
{
if (m[i] != right.m[i])
{
return false;
}
}
return true;
} method& operator=(const method &r) {
m.assign(r.m.begin() , r.m.end());
return *this;
}
};
bool operator == (const method left , const method right)
{ if (left.m.size() != right.m.size())
return false;
for (int i=0 ; i<right.m.size() ; i++)
{
if (left.m[i] != right.m[i])
{
return false;
}
}
return true;
}
class LlessR
{
public:
LlessR() {}
bool operator()(const method &l,const method &r) {
for (int i=0 ; i<l.m.size() ; i++)
{
if (l.m[i] > r.m[i])
{
return false;
}
}
return true;
}};-----------------------------------------------------------------------
map<method,int, LlessR> result; //定义
...... //与map无关代码
result.insert(make_pair(met , 1)); //代码中插入就不行,
cout<<result.size()<<endl; //总是 =1??????????????为什么size() 总是1呢????
map<method,int, LlessR>//起比较作用的是LlessR 而非method的opeartor 除非在LlessR中调用method 的 opeartor
恩恩。就是了。我后面也改了比较函数了,就是比较函数写错了。
那再请问:怎么写写才能让map中的元素不重复?也是在比较函数中写吗???
{
if (l.m[i] > r.m[i])
{
return false;
}else if(l.m[i] < r.m[i])
{
return true;
}
}return false;
}