2017-06-07 25 views
1

QStringsのツリー構造を単一のQStringに連結したいと考えています。QStringsを効率的に連結する方法

私が正しく理解していれば、QStringsはJava-Stringsのように不変なので、JavaのStringBuilderを使用する理由は同じです。

%演算子を使用すると、単一の文の効率が向上するだけであるように見えるため、複数のネストされたループを連結する必要があるため、あまり役に立ちません。

私はstd :: stringstreamを使うことができましたが、それはおそらくパフォーマンスコストを伴い、それぞれの単一QStringをC文字列または標準文字列に変換することを意味します。

QTextStreamヘルプを使用しますか?

またはもっと良い可能性はありますか?

+1

「QString」については何も「不変」ではありません。 [documentation](http://doc.qt.io/qt-5/qstring.html)を見れば、追加、挿入、挿入などの無数の方法があります。 –

+1

QString :: append )メソッド –

+0

'QStringBuilder'? http://blog.qt.io/blog/2011/06/13/string-concatenation-with-qstringbuilder/ – DAle

答えて

0

+演算子またはappendメソッドを使用して大量の文字列を連結すると、メモリの再割り当てによって非効率的になります。 上記の再割り当てを避けるためには、concatinationの必要なメモリ量を計算し、char * bufferにその量を割り当て、バッファ内の適切な場所にconcatinateするすべての文字列の生データをコピーする必要があります(memcpyなど)。その後、生成された文字列オブジェクトをchar * bufferからconstractします。

関連する問題