Saltar al contenido

¿Cómo encontrar la intersección de dos std::set en C++?

Bienvenido a nuestra comunidad, ahora vas a hallar la respuesta de lo que necesitas.

Solución:

No ha proporcionado un iterador de salida para set_intersection

template 
OutputIterator set_intersection ( InputIterator1 first1, InputIterator1 last1,
                                  InputIterator2 first2, InputIterator2 last2,
                                  OutputIterator result );

Soluciona esto haciendo algo como

...;
set intersect;
set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(),
                 std::inserter(intersect, intersect.begin()));

Tu necesitas un std::insert iterador ya que el conjunto está ahora vacío. no podemos usar std::back_inserter o std::front_inserter ya que set no admite esas operaciones.

Eche un vistazo a la muestra en el enlace: http://en.cppreference.com/w/cpp/algorithm/set_intersection

Necesita otro contenedor para almacenar los datos de la intersección, se supone que el siguiente código funciona:

std::vector common_data;
set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(), std::back_inserter(common_data));

Consulte std::set_intersection. Debe agregar un iterador de salida, donde almacenará el resultado:

#include 
std::vector s3;
set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(), std::back_inserter(s3));

Ver Ideone para la lista completa.

Te invitamos a añadir valor a nuestra información tributando tu veteranía en las interpretaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *