マルチスレッド データ マージのためのベクトルの連結
マルチスレッド プログラミングでは、異なるスレッドからの結果をマージする必要がよくあります。一般的なシナリオの 1 つは、ベクトルの連結です。タスクは、2 つの既存のベクトルの要素を含む新しいベクトルを作成することです。
ベクトルを連結する効率的なアプローチの 1 つは、宛先ベクトルにメモリを事前に割り当ててから、insert() 関数を使用してソース ベクトルの要素を追加することです。 。コード スニペットは次のとおりです。
<code class="cpp">std::vector<int> A; std::vector<int> B; std::vector<int> AB; AB.reserve( A.size() + B.size() ); // preallocate memory AB.insert( AB.end(), A.begin(), A.end() ); AB.insert( AB.end(), B.begin(), B.end() );</code>
reserve() 関数は、A.size() B.size() 要素を保持する宛先ベクトル AB を準備します。この最適化により、連結プロセス中の不要な再割り当てが回避されます。
A と B の両方の要素を AB に追加するために、insert() 関数が 2 回呼び出されます。順序を維持しながら、一連の要素を AB ベクトルに効率的に追加します。
このアプローチを利用すると、マルチスレッド シナリオでベクトルを効率的に連結でき、異なるスレッドからの結果を正しくマージできます。
以上がマルチスレッド プログラミングでベクトルを効率的に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。