C'è un modo per fare std :: set_intersection su due diversi tipi di set?set_intersection per due diversi tipi di set
ho due set:
std::set<X1> l_set1;
std::set<X2> l_set2;
sono in grado di definire alcuni comparatore per loro che controlla se X1 e X2 sono uguali.
struct sample_comparer
{
bool operator()(const &X1 p_left, const &X2 p_right)
{
return p_left == p_right;
}
};
Ora, provo a fare una serie di intersezione su quei due insiemi:
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());
Purtroppo, non posso forzare questo codice funzioni. Non sono nemmeno sicuro che sia possibile, ma dal description di set_intersection so che posso usare due diversi iteratori.
Ho provato a cercare alcuni esempi di codice che fanno ciò che voglio, ma non ne ho trovato nessuno? Qualcuno potrebbe presentarmi un esempio di codice funzionante per il mio problema?
Aggiornamento: l'errore è:
error: stl_function.h:227: no match for 'operator<' in '__x < __y'
Grazie in anticipo!
"Sfortunatamente, non posso forzare questo codice a funzionare." Quali errori del compilatore ottieni? –
Il tuo comparatore di campioni non fa la cosa giusta. Deve essere un numero inferiore a, imponendo un rigoroso ordine debole sugli elementi comparati. – tokage
Hai provato a fornire un operatore booleano