「<<」と「+」の両方を使用して、さまざまな文字列を一緒に出力する人を見てきました。
cout << firstname << lastname << endl;
対:
cout << firstname + lastname << endl;
「<<」を使用した方が良いですか、それともあまり違いはありませんか?
<<
その特定の場合に使用する方が良いと思います。そうしないと、連結によって一時的になり、正当な理由もなくメモリが割り当てられる可能性があります。
文字列を<<
連結すると、貼り付けられた 2 つの文字列のコピーが作成されます。上に追加のメモリを割り当てるかどうかは、C++ ライブラリで文字列がどのように実装されているかの問題ですが、姓と名が「十分に長い」(合わせて 8 ~ 16 文字より大きい) 場合は、メモリを割り当てる可能性が高くなります。 (一時コピーが不要になったら、再度解放します)。
オペレーターは<<
比較してオーバーヘッドがほとんどないため、間違いなく優れています。
もちろん、これらのことを何千回も実行しない限り、測定可能な違いが生じることはまずありません。しかし、CPU サイクルを無駄にしないのは良いことです。他の場所でどのように使用できるかはわかりません... ;)
カスケード<<
はより良い選択です。
パフォーマンスのために、他のテアドが言及したように、オペレーター<<
は必ずしも一時オブジェクトを導入するとは限りません。カスケード<<
はパイプと見なすことができます。
また+
、左側のオペランドがユーザー定義型でない場合、対応するoperator+
. 例えば、
cout << "Hello, " << lastname << endl;// Works
cout << "Hello, " + lastname << endl; // This won't work