2017-10-12 49 views
0

我正在做一個C++練習,我必須實現一個表示包含一個字符串的向量的弱版本的類。其中一個要求是按照詞彙比較規則使<和>運營商超載。如何使用光學方法比較兩個字符串向量?

我一直在閱讀算法,但我根本不瞭解它或如何實現它。什麼使得矢量<比其他?我比較哪些字符串?私有變量是字符串*數組,大小和容量。

+0

[看看cppreference如何解釋它。](http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare)他們甚至提供代碼示例。 – user4581301

回答

0

您可以在'<'重載實現中使用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; 
    } 
}; 

類似地,「>」運算符可以被重載

+0

認真嗎?你有沒有試過編譯這個?這既不是C也不是C++ – MSalters

+0

我已經提到'obj1'是默認初始化的,可能只是空的? – MSalters

0

兩個序列之間的lexographical比較的想法是,你的序列首先通過它們的第一元件,如果必要則可以通過第二,etctera排序,並。也就是說,如果a[0]<b[0]a<b。如果a[0]>b[0],則a>b。但如果a[0]==b[0],那麼你看看a[1]b[1]

當序列是字符序列(又名字符串)時,這是常用的字典順序。但是相同的算法適用於任何可排序元素的序列。