ホームページ > バックエンド開発 > C++ > C std::vector からサブベクトルを効率的に抽出するにはどうすればよいですか?

C std::vector からサブベクトルを効率的に抽出するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-04 09:24:11
オリジナル
345 人が閲覧しました

How to Efficiently Extract a Subvector from a C   std::vector?

ベクトルからのサブベクトルの抽出

C では、 std::vector は要素の連続シーケンスを格納するコンテナーです。新しいベクトルを作成するために大きなベクトルから要素のサブセットを抽出する必要がある場合はどうすればよいですか?

要素 X から Y で構成される新しいベクトルを構築するには、次の手順を使用できます:

  1. の最初と最後の要素を参照するイテレータを取得します。 subvector:
vector<T>::const_iterator first = myVec.begin() + X;
vector<T>::const_iterator last = myVec.begin() + Y + 1;
ログイン後にコピー
  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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート