set_intersection для двух разных типов наборов

Есть ли способ использовать std :: set_intersection для двух разных типов наборов?

У меня есть два набора:

std::set l_set1;
std::set l_set2;

Я могу определите для них некоторый компаратор, который проверяет, равны ли X1 и X2.

struct sample_comparer
{
    bool operator()(const &X1 p_left, const &X2 p_right)
    {
        return p_left == p_right;
    }
};

Теперь я пытаюсь сделать пересечение множеств на этих двух наборах:

std::set 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());

К сожалению, я не могу заставить этот код работать. Я даже не уверен, возможно ли это, но из описания set_intersection я знаю, что могу использовать два разных итератора.

Я попытался найти несколько примеров кода, которые делают то, что я хочу, но не нашел? Может ли кто-нибудь представить мне рабочий образец кода для решения моей проблемы?

Обновление: ошибка:

ошибка: stl_function.h: 227: нет соответствия для 'operator

Заранее спасибо!

6
задан matekm 24 August 2011 в 08:06
поделиться