Maison >développement back-end >C++ >Comment puis-je extraire efficacement un sous-vecteur d'un vecteur C ?

Comment puis-je extraire efficacement un sous-vecteur d'un vecteur C ?

DDD
DDDoriginal
2024-12-05 20:50:12476parcourir

How Can I Efficiently Extract a Subvector from a C   Vector?

Extraire efficacement un sous-vecteur d'un vecteur

Supposons que vous souhaitiez extraire une partie d'un vecteur, en créant un nouveau vecteur avec des éléments X à travers Y. En C avec le vecteur de bibliothèque standard, l'approche la plus simple consiste à utiliser des itérateurs :

vector<T>::const_iterator first = myVec.begin() + X;
vector<T>::const_iterator last = myVec.begin() + Y + 1;
vector<T> newVec(first, last);

Cette opération a un Complexité temporelle O(N), où N est la taille du vecteur d'origine. Cependant, il est important de noter qu'il n'existe pas de moyen beaucoup plus efficace d'y parvenir en utilisant un vecteur.

Type de données STL alternatif

Si vous devez extraire des sous-vecteurs envisagez fréquemment d'utiliser un conteneur STL alternatif qui prend en charge une extraction de sous-vecteurs plus efficace. Une option est le deque, qui permet une insertion et une suppression efficaces d'éléments aux deux extrémités :

deque<T> myDeque;
deque<T> subDeque(myDeque.begin() + X, myDeque.begin() + Y + 1);

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