template <typename InputIterator, typename UnaryFunction, typename Compare = std::equal_to<void>>
void uniques(InputIterator begin, InputIterator end, UnaryFunction f, Compare comp = Compare())
{
while (begin != end)
{
InputIterator next = std::next(begin), find = std::find_if(next, end, [&] (auto& value)
{
return !comp(*begin, value);
});
if (next == find)
{
f(*begin);
}
begin = find;
}
}
template <typename InputIterator1, typename InputIterator2, typename BinaryFunction, typename Compare = std::less<void>>
void intersect(InputIterator1 begin1, InputIterator1 end1, InputIterator2 begin2, InputIterator2 end2, BinaryFunction f, Compare comp = Compare())
{
while (begin1 != end1 && begin2 != end2)
{
if (comp(*begin1, *begin2))
{
++begin1;
}
else if (comp(*begin2, *begin1))
{
++begin2;
}
else
{
f(*begin1++, *begin2++);
}
}
}
Comments
0 B
|👍
/👎