我有時想使用包含多個值的map和set中的鍵。我不太在乎速度。有沒有簡單或一般的方法來編寫運算符<來比較具有多個值的結構?我自己想出了以下內容,但它很乏味,特別是隨着價值數量的增加。謝謝。如何實現operator <用於STL數據結構中使用的任意結構?
struct Properties
{
Properties() {}
Properties
(const string& data1
, const string& data2
, const string& data3
)
: data1(data1)
, data2(data2)
, data3(data3)
{}
string data1;
string data2;
string data3;
bool operator < (const Properties& other) const
{
if (this->data1 == other.data1)
{
if (this->data2 == other.data2)
{
if (this->data3 == other.data3)
{
return false;
}
else
{
return this->data3 < other.data3;
}
}
else
{
return this->data2 < other.data2;
}
}
else
{
return this->data1 < other.data1;
}
}
};
雖然它有不工作的缺點。例如,{3,3,1}'會比較小於{2,2,2}',這可能不是OP所期望的。 – molbdnilo 2013-03-13 13:00:18
@molbdnilo固定。 – 2013-03-13 13:27:43