c++ - 从 std::multiset 的第 i 个元素删除到末尾

标签 c++ c++11 multiset

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/

相关文章:

c++ - 如何在 visual studio 2015 中更改条件断点上的变量值

c++ - 如何从 "STL"格式转换为 "3DS"

c++ - 标准 12.1 p14 中的 "unspecified value"是什么意思?

作为包类型的 Python 计数器比较

c++ - 使用openmp创建共享锁

c++ - 如果推导其中一个模板参数,是否可以不指定所有模板参数?

java - 在 C++、Java、C# 之间循环初始化变量作用域

java - MultiSet 类中添加/删除/等于/字符串方法的问题

c++:遍历一组 vector

c++ - 将整数转换为位表示