i
在我的代码中是k
,只是为 future 的用户使用了i
。
std::multiset<std::pair<Point::FT, int> > res;
res.erase(res.begin() + k, res.end());
错误:
不匹配运算符 +
我怎样才能实现这个功能?
最佳答案
使用std::next
推进迭代器 k
个位置
res.erase(std::next(res.begin(), k), res.end());
您的代码无法编译的原因是因为 std::multiset
迭代器是 BidirectionalIterators ,因此它们仅实现前/后递增/递减运算符,因此您需要遍历迭代器所需的位置数,std::next
将为您完成。
关于c++ - 从 std::multiset 的第 i 个元素删除到末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25777240/