给定一个具有多个值的排序向量,如下例所示:
std::vector<double> f;
f.pushback(10);
f.pushback(100);
f.pushback(1000);
f.pushback(10000);
我正在寻找最优雅的方法来检索任何 double d 与其直接相邻的两个值。例如,给定值“45”,我希望返回“10”和“100”。
我正在查看 lower_bound 和 upper_bound,但它们没有做我想要的。你能帮我吗?
编辑:我决定发布我自己的答案,因为它在某种程度上是我在该线程中获得的所有有用答案的综合体。我已经投票赞成了我认为最有帮助的那些答案。
感谢大家,
Dave
您可以使用 equal_range() 在一次调用中获取这两个值(如果存在)。它返回一个 std::pair 迭代器,第一个是第一个位置,第二个是最后一个位置,您可以在其中插入传递的值而不违反顺序。为了严格满足您的标准,您必须在验证迭代器不等于向量的 begin() 之后,首先递减迭代器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)