¿Hay alguna manera de hacer std :: set_intersection en dos tipos diferentes de conjuntos?set_intersection para dos tipos diferentes de conjuntos
I tienen dos conjuntos:
std::set<X1> l_set1;
std::set<X2> l_set2;
soy capaz de definir algunos comparador para ellos que comprueba si X1 y X2 son iguales.
struct sample_comparer
{
bool operator()(const &X1 p_left, const &X2 p_right)
{
return p_left == p_right;
}
};
Ahora, trato de hacer un conjunto intersección de estos dos conjuntos:
std::set<X1> l_intersect;
std::set_intersection(l_set1.begin(), l_set1.end(), l_set2.begin(), l_set2.end(),
std::inserter(l_intersect, l_intersect.begin()), sample_comparer());
Por desgracia, no puedo obligar a que este código funcione. Ni siquiera estoy seguro de si esto es posible, pero desde el description de set_intersection sé que puedo usar dos iteradores diferentes.
He intentado buscar algunas muestras de código que hacen lo que quiero, pero no encontré ninguna? ¿Podría alguien presentarme una muestra de código de trabajo para mi problema?
Actualización: el error es:
error: stl_function.h:227: no match for 'operator<' in '__x < __y'
Gracias de antemano!
"Desafortunadamente, no puedo forzar este código para que funcione". ¿Qué errores de compilación recibe? –
Su comparador de muestra no hace lo correcto. Necesita ser menos que, imponer un orden estricto y débil a los elementos comparados. – tokage
¿Intentó proporcionar un operador de bool