簡體   English   中英

C ++模板並比較不同類型

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

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