カスタム文字列を渡す最も効果的な方法は何ですか。 例えば、私はこのコードセグメントを有する:文字列により-VAL戻され、その後もAで使用されているので、機能はそれほど有効ではないことは明らかである効率的なカスタム文字列作成者
string addSpace(int n) {
string result("");
for (int i = 0; i < n; i++) {
result += ' ';
}
return result;
}
outputFile << addSpace(data.len());
をRValueにも適した場所。 Nが固定された場合は、Nは5 =と言う、私はちょうど
outputFile << " "
が、明らかにそれはない場合に使用することができます。
だから、最良の解決策は何でしょうか(このN個の空白の特定の例に関係なく、パラメータに依存する文字列の作成については何も言えません)。 私はラムダ関数について考えましたが、私はあまりよく分かりません。
おそらく "効率的"を意味するでしょう... –
'data.len'には妥当な上限があり、関数を非常に頻繁に呼び出すと、生成された各文字列をキャッシュすることができます。文字列の関数静的配列(または連想配列)をチェックし、チェックする長さのインデックスとそれがあれば、キャッシュされた値を返します。または、もっと鈍い、最大のlenが小さい場合、すべての文字列を事前に生成します。ああ、あなたがするすべてがそれを印刷している場合は、戻り値をconst参照にする必要があります。 –
あなたは 'std :: setw'のようなものを探しているかもしれませんが、とにかく効率の差はありそうにありません。 –