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
Linda Hamiltonoriginal
2024-12-04 09:24:11279parcourir

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;
  1. Utilisez ces itérateurs pour construire un nouveau vecteur :
vector<T> newVec(first, last);

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());

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!

Déclaration:
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