es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , ,

Answer

  1. Avatar for 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 implementar remove_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() {
    std::vector words = {“The”, “Quick”, “Brown”, “Fox”, “Jumps”, “Over”, “The”, “Lazy”, “Dog”};
    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ón std::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.

Comments are closed.