У меня есть два вектора полных структур, которые очень просто:C++: Как использовать set_intersection для двух векторов, содержащих пользовательские структуры?
typedef struct{
//three vertex ids
uint a,b,c;
} Face;
Я в настоящее время пытается запустить set_intersection так:
set_intersection(listOfFaces1.begin(),listOfFaces1.end(),listOfFaces2.begin(),listOfFaces2.end(), back_inserter(facesToDelete));
Я предполагаю, что мне нужно, чтобы перезаписать некоторые компаратор как-то ? Но я не уверен, как определить определение между двумя объектами Face ...
Любая помощь будет очень признательна.
Посмотрите [этот вопрос] (http://stackoverflow.com/questions/6955578/subtraction-and-intersection-of- two-vectors-of-pointers-in-c) – Joel
Вам нужно (a) определить 'operator <' для класса или (b) определить функтор/функцию, которая может сравнивать два 'Face'. Если вы используете (b), вы передаете функтор/функцию в качестве последнего аргумента. –
@RSahu Я знаю о передаче функции в качестве последнего аргумента, но примеры, которые я нашел онлайн, просто определяют, когда один объект <другой, а не ==. И в этом случае нет никакого способа определить, какой объект Face <другой. Я только хочу проверить равенство, но, похоже, нет способа сделать это с помощью функции сравнения, которую я могу передать в set_intersection()? – user2976199