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!