[英]Overload operator< for std::pair
我想重載運算符<for std :: pair class。
template <>
bool operator< (const std::pair<int, std::string>& lhs, const std::pair<int, std::string>& rhs) {
return lhs.first > rhs.first || (!(rhs.first > lhs.first) && lhs.second < rhs.second);
};
我收到以下錯誤: 沒有函數模板匹配函數模板特化'運算符<'
我也嘗試過:
template <>
bool std::pair<int, std::string>::operator< (const std::pair<int, std::string>& lhs, const std::pair<int, std::string>& rhs) {
return lhs.first<rhs.first || (!(rhs.first<lhs.first) && lhs.second<rhs.second);
};
這次我得到錯誤: 重載'operator <'必須是二元運算符(有3個參數)
我該怎么做?
您編寫的是模板特化,假定您之前已定義模板。
就像在評論中提到的,在這種情況下,你不需要做運算符重載的模板,因為你已經專門的pair
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.