Maison >développement back-end >C++ >Comment extraire efficacement un sous-vecteur d'un std :: vector C ?
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 :
vector<T>::const_iterator first = myVec.begin() + X; vector<T>::const_iterator last = myVec.begin() + Y + 1;
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!