[英]C++ Templates and comparing different types
我正在嘗試使用模板在C ++中編寫通用排序函數,但是我被困在編寫greater
函數(如果lhs > rhs
返回true)
template <typename T>
bool Sorter<T>::greater(T lhs, T rhs)
{
return lhs > rhs;
}
上面的代碼將處理簡單的類型,例如int,long。 我應該怎么做才能使代碼適用於std::string
, std::string&
, const char *
。 代碼示例將提供很大的幫助。
我會說,您唯一需要擔心的就是const char*
, std::string
應該已經在某個地方定義了operator>
(通常在<string>
)
對於const char*
,請提供專門的名稱。
template <>
bool Sorter<const char*>::greater(const char* lhs, const char* rhs)
{
return std::strcmp(lhs, hs) > 0;
}
您必須專門針對比較不如lgs>rhs
那樣簡單的類型使用模板。
這是我重新編寫代碼的方法:
template <typename T>
bool greater(T const& lhs, T const& rhs)
{
return lhs > rhs;
}
這是您的專長:
template<>
bool greater<string>(string const& lhs, string const& rhs)
{
//
}
為簡單起見,刪除了成員資格。
注意,已經有一個std::greater
。
所有這些類型都帶有比較運算符。 請記住,char只是一個1字節的數字。 對於字符串,使用字典順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.