过载运算符<对于std :: pair

时间:2014-05-18 10:08:42

标签: c++ operator-overloading

我想重载运算符<对于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); 
};

我收到以下错误:没有函数模板匹配函数模板特化'运算符&lt;'

我也尝试过:

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); 
};

这次我收到错误:重载'运算符&lt;'必须是二元运算符(有3个参数)

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您所写的是模板专业化,假设您之前已定义过该模板。

如评论中所述,在这种情况下,您不需要让运算符重载模板,因为您已经专门设置了pair