簡體   English   中英

重載運算符<for std :: pair

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM