2017-10-12 12 views
0

私は、文字列を保持する弱いバージョンのベクトルを表すクラスを実装する必要があるC++のエクササイズを行っています。要件の1つは、字句比較の規則に従って<と>演算子をオーバーロードすることです。文字列の2つのベクトルを字句解析する方法は?

私はアルゴリズムを読んできましたが、私はそれを全く理解していないか、それを実装する方法がありません。何がベクトルを他のものよりも<にするのですか?私は弦から何を比較しますか?プライベート変数は、文字列*配列、サイズ、および容量です。

+0

[cppreferenceがどのように説明しているかを見てください。](http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare)彼らはコードサンプルを提供しています。 – user4581301

答えて

0

'<'オーバーロードの実装では、strcmp(文字列a、文字列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; 
    } 
}; 

同様に「>」演算子は、2つの配列間lexographical比較のアイデアが必要な場合は、それらの第二、etcteraによって次にその最初の要素によって第一の配列をソートし、ということである

+0

真剣に?これをコンパイルしようとしましたか?これはCでもなくC++でもありません – MSalters

+0

'obj1'は既定で初期化されていると言われていますが、おそらく空白なのでしょうか? – MSalters

0

をオーバーロードすることができます。つまり、a[0]<b[0]の場合はa<bとなります。 a[0]>b[0]の場合は、a>bとなります。しかし、a[0]==b[0]の場合は、a[1]b[1]となります。

シーケンスが文字のシーケンス(別名文字列)である場合、これは一般的な辞書の順序です。しかし、同じアルゴリズムはソート可能な要素の任意のシーケンスで動作します。

関連する問題