我的結構是怎樣的:如何爲包含map的結構編寫比較運算符?
struct MyStruct
{
char *name;
map<char*,char*> mymap;//assume that this map insert data in increasing order
};
我有另一個地圖:
map<MyStruct,int,Compare> mTest;
//compare function for less then operator
struct Compare
: public std::binary_function<MyStruct, MyStruct, bool>
{
bool operator()(const MyStruct &a, const MyStruct&b)
{
if(strcmp(a.name,b.name)< 0)
return true;
else if(strcmp(a.name,b.name)==0)
{
//How should I compare map `mymap` ??
}
return false;
}
}
所以我應該如何寫比較爲mymap
?
這就是我想要的東西基本上是:
兩個地圖都是平等的,如果
有名字都是平等的
他們的地圖大小相等
然後地圖的內容應該是平等的,即它們的關鍵和價值。
您應該使用C++的語法,首先。 'elseif'不是C++,你的'if'缺少一個結束符。那完全取決於你如何將兩張地圖正確地排序。隨你便。唯一的是你應該確保它是一個嚴格的順序。 –
@ArneMertz我已經更新了上面的代碼。讓我們假設'mymap'按遞增順序存儲數據。現在我怎麼能比較'Compare'函數中的兩個地圖? – EmptyData
首先,'if(strcmp(a.name