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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, existe una manera de eliminar un elemento en un conjunto/mapa y obtener el valor anterior como valor de retorno temporal utilizando la función std::map::extract() (disponible en C++17 en adelante) o la función std::set::extract() (disponible en C++20 en adelante).

    La función extract() toma un argumento de clave y devuelve un objeto de tipo std::map::node_type (en caso de mapas) o std::set::node_type (en caso de conjuntos) que contiene el par clave-valor extraído. Este objeto tiene una función miembro que solo puede moverse, value(), que devuelve el valor asociado con la clave.

    Aquí hay un ejemplo que demuestra el uso de la función extract():

    “`c++
    #include
    #include

    int main() {
    std::map<int, std::string=””> mymap{{1, “manzana”}, {2, “naranja”}, {3, “plátano”}};

    auto node = mymap.extract(2);
    if (node.empty()) { // la clave no se encontró
        std::cout << "Clave no encontrada\n";
    } else {
        std::string value = std::move(node.value().second);
        std::cout << "Valor extraído: " << value << "\n";
    }
    
    // Ahora mymap solo contiene {1, "manzana"} y {3, "plátano"}
    
    return 0;
    

    }
    “`

    En este ejemplo, extraemos el par clave-valor {2, "naranja"} del mapa utilizando la función extract(). Verificamos si el nodo está vacío (lo que significa que la clave no se encuentra en el mapa). Si no lo está, movemos el valor del nodo extraído utilizando std::move() e imprimimos el valor. Finalmente, podemos hacer lo que queramos con este valor (por ejemplo, moverlo a algún otro contenedor).</int,>

Comments are closed.