Maison > développement back-end > C++ > Comment extraire efficacement un sous-vecteur d'un std :: vector C ?

Comment extraire efficacement un sous-vecteur d'un std :: vector C ?

Linda Hamilton
Libérer: 2024-12-04 09:24:11
original
278 Les gens l'ont consulté

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

Extraire un sous-vecteur d'un vecteur

En C , std::vector est un conteneur qui stocke une séquence contiguë d'éléments. Que se passe-t-il si vous devez extraire un sous-ensemble d'éléments d'un grand vecteur pour en créer un nouveau ?

Pour construire un nouveau vecteur composé des éléments X à Y, vous pouvez suivre les étapes suivantes :

  1. Obtenir des itérateurs référençant le premier et le dernier élément du sous-vecteur :
vector<T>::const_iterator first = myVec.begin() + X;
vector<T>::const_iterator last = myVec.begin() + Y + 1;
Copier après la connexion
  1. Utilisez ces itérateurs pour construire un nouveau vecteur :
vector<T> newVec(first, last);
Copier après la connexion

Cette approche prend un temps O(N) pour construire le nouveau vecteur, mais elle est efficace pour les grands vecteurs. Si vous devez créer une copie d'autres éléments dans le vecteur d'origine, vous pouvez utiliser std::copy :

vector<T> newVec(Y - X + 1);
std::copy(first, last, newVec.begin());
Copier après la connexion

Si le vecteur d'origine est très grand et que vous n'en avez besoin que d'une partie, vous pouvez envisagez d'utiliser un std :: deque au lieu d'un std :: vector. Un std::deque prend en charge une insertion et une suppression efficaces aux deux extrémités, ce qui le rend plus adapté à l'extraction dynamique de sous-vecteurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal