operator[]
の使用は間違っていると言われました。
違いは何ですか:
vector<double> * IDs;
...
IDs->operator[](j) = 1;
と:
vector<double> * IDs;
...
(*IDs)[j] = 1;
operator[]
の使用は間違っていると言われました。
違いは何ですか:
vector<double> * IDs;
...
IDs->operator[](j) = 1;
と:
vector<double> * IDs;
...
(*IDs)[j] = 1;
まったく何もありません。それらは同等です。
2つのこと
1)IDs->operator[](j)
よりも明確ではありません(*IDs)[j]
。
2)const vector<double>& IDs
代わりに を使用できる場合は、より明確な利点が得られるだけでなく、IDs[j]
を使用してベクトルを変更できないという事実によって安定性も得られますIDs
。
いつの日かあなたよりも能力の低い誰かがあなたのコードを保守することになるので、明確にすることが重要です。
この演算子を使用する全体的な考え方は、オブジェクトが [] を何らかの方法で使用できるようにすることです。これにより、実際のデータ構造またはデータ編成をそれ自体の外側に隠し、配列のようなインターフェイスを提供します。
たとえば、vector と deques はまったく異なる方法で実装されており、さまざまな目的でより優れたパフォーマンスを発揮しますが、外側ではどちらも [] を提供するため、ユーザーは動的配列を使用しているように感じます。
したがって、それは間違いではありませんが、目的に反します。