Q:

Delete from i-th element of std::multiset to the end

i is k in my code, just used i for the future users.
std::multiset<std::pair<Point::FT, int> > res;
res.erase(res.begin() + k, res.end());

Error:
no match for operator +
How can I achieve this functionality?

A:

Use std::next to advance the iterator k positions
res.erase(std::next(res.begin(), k), res.end());

The reason your code fails to compile is because std::multiset iterators are BidirectionalIterators, so they only implement pre/post increment/decrement operators, so you need to walk the iterator the desired number of positions, which std::next will do for you.

