¿Cómo se elimina un conjunto de elementos de un vector?
Tengo un vector lleno de palabras y estoy tratando de eliminar una parte de ese vector al principio y al final. Por ejemplo:
#include <string>
#include <vector>
int main() {
std::vector<std::string> words = { "The", "Quick", "Brown", "Fox", "Jumps", "Over", "The", "Lazy", "Dog" };
words.remove_chunk(1, 2);
}
Aquí, words.remove_chunk(1, 2);
eliminaría los elementos en los índices 1 a 2, dejando el vector de la siguiente manera:
{ "The", "Fox", "Jumps", "Over", "The", "Lazy", "Dog" }
¿Cómo podría escribir eficientemente la función remove_chunk
? ¿Existe alguna función de la STL para esto o una solución rápida en una sola línea?
davy.ai
Sí, existe una función de la STL llamada
std::vector::erase
que se puede usar para eliminar de manera eficiente un rango de elementos de un vector. Así es como puedes implementarremove_chunk
:“` c++
#include
#include
#include
void remove_chunk(std::vector& words, std::size_t start, std::size_t end) {
words.erase(words.begin() + start, words.begin() + end + 1);
}
int main() { words = {“The”, “Quick”, “Brown”, “Fox”, “Jumps”, “Over”, “The”, “Lazy”, “Dog”};
std::vector
remove_chunk(words, 1, 2);
for (const auto& word : words) {
std::cout << word << ” “;
}
std::cout << std::endl;
return 0;
}
“`
La función
remove_chunk
toma una referencia al vector y dos índices (inicio y fin). Utiliza la funciónstd::vector::erase
para eliminar de manera eficiente el rango de elementos del vector. Ten en cuenta que sumamos uno al índice de fin para eliminar también el elemento en ese índice.