ベクトルからのサブベクトルの抽出
C では、 std::vector は要素の連続シーケンスを格納するコンテナーです。新しいベクトルを作成するために大きなベクトルから要素のサブセットを抽出する必要がある場合はどうすればよいですか?
要素 X から Y で構成される新しいベクトルを構築するには、次の手順を使用できます:
vector<T>::const_iterator first = myVec.begin() + X; vector<T>::const_iterator last = myVec.begin() + Y + 1;
vector<T> newVec(first, last);
このアプローチでは、新しいベクトルの構築に O(N) 時間がかかります。ベクトルですが、大きなベクトルの場合は効率的です。元のベクトル内の他の要素のコピーを作成する必要がある場合は、 std::copy を使用できます。
vector<T> newVec(Y - X + 1); std::copy(first, last, newVec.begin());
元のベクトルが非常に大きく、その一部だけが必要な場合は、次のようにすることができます。 std::vector の代わりに std::deque の使用を検討してください。 std::deque は両端で効率的な挿入と削除をサポートしており、動的なサブベクトル抽出により適しています。
以上がC std::vector からサブベクトルを効率的に抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。