私は、文字列を保持する弱いバージョンのベクトルを表すクラスを実装する必要があるC++のエクササイズを行っています。要件の1つは、字句比較の規則に従って<と>演算子をオーバーロードすることです。文字列の2つのベクトルを字句解析する方法は?
私はアルゴリズムを読んできましたが、私はそれを全く理解していないか、それを実装する方法がありません。何がベクトルを他のものよりも<にするのですか?私は弦から何を比較しますか?プライベート変数は、文字列*配列、サイズ、および容量です。
私は、文字列を保持する弱いバージョンのベクトルを表すクラスを実装する必要があるC++のエクササイズを行っています。要件の1つは、字句比較の規則に従って<と>演算子をオーバーロードすることです。文字列の2つのベクトルを字句解析する方法は?
私はアルゴリズムを読んできましたが、私はそれを全く理解していないか、それを実装する方法がありません。何がベクトルを他のものよりも<にするのですか?私は弦から何を比較しますか?プライベート変数は、文字列*配列、サイズ、および容量です。
'<'オーバーロードの実装では、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によって次にその最初の要素によって第一の配列をソートし、ということである
をオーバーロードすることができます。つまり、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