我正在做一個C++練習,我必須實現一個表示包含一個字符串的向量的弱版本的類。其中一個要求是按照詞彙比較規則使<和>運營商超載。如何使用光學方法比較兩個字符串向量?
我一直在閱讀算法,但我根本不瞭解它或如何實現它。什麼使得矢量<比其他?我比較哪些字符串?私有變量是字符串*數組,大小和容量。
我正在做一個C++練習,我必須實現一個表示包含一個字符串的向量的弱版本的類。其中一個要求是按照詞彙比較規則使<和>運營商超載。如何使用光學方法比較兩個字符串向量?
我一直在閱讀算法,但我根本不瞭解它或如何實現它。什麼使得矢量<比其他?我比較哪些字符串?私有變量是字符串*數組,大小和容量。
您可以在'<'重載實現中使用strcmp(string a,string b)。
class ClassName{
/*
variables
constructors and methods
*/
bool operator<(ClassName obj){
ClassName obj1;
if(strcmp(obj.str , obj1.str)<0) //less than zero as we are overloading "<" operator
return true; //read - www.cplusplus.com/reference/cstring/strcmp
return false;
}
};
類似地,「>」運算符可以被重載
兩個序列之間的lexographical比較的想法是,你的序列首先通過它們的第一元件,如果必要則可以通過第二,etctera排序,並。也就是說,如果a[0]<b[0]
則a<b
。如果a[0]>b[0]
,則a>b
。但如果a[0]==b[0]
,那麼你看看a[1]
和b[1]
。
當序列是字符序列(又名字符串)時,這是常用的字典順序。但是相同的算法適用於任何可排序元素的序列。
[看看cppreference如何解釋它。](http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare)他們甚至提供代碼示例。 – user4581301