【发布时间】:2009-01-22 15:07:50
【问题描述】:
给定一个带有多个值的排序向量,如下例所示:
std::vector<double> f;
f.pushback(10);
f.pushback(100);
f.pushback(1000);
f.pushback(10000);
我正在寻找最优雅的方法来检索任何双 d 紧邻它的两个值。例如,给定值“45”,我希望它返回“10”和“100”。
我正在查看 lower_bound 和 upper_bound,但它们并没有按照我的意愿行事。你能帮忙吗?
编辑:我决定发布我自己的分析器,因为它在某种程度上是我在这个线程中得到的所有有用答案的组合。我投票选出了我认为最有帮助的答案。
谢谢大家,
戴夫
【问题讨论】:
-
在某些极端情况下您的问题不清楚。如果您在向量 {44, 45, 46} 上使用值“45”,您会期望什么? {44, 45, 45, 46} 呢?
-
你说得对,我应该澄清一下。对于初学者来说,向量中的值是唯一的。其次,我实际上是在寻找以下两个值:一个是小于给定值的最大值,另一个是大于或等于的最小值。
-
哦,我所说的优雅并不是指最高效的。我的意思是优雅,就像使用 STL 编写可读代码一样(如果有这样的话)。