2014-10-20 86 views
0

我想获得从查找表的材料性质与线性内插。是否有一个std实现可以做类似的事情?是否有查找表的std实现?

否则我会通过自己的实现,使用两个向量x和y。使用lower_bound在x中找到正确的位置,然后用x进行插值。我能做得更好吗?

+0

请参阅[更好的方式比如果其他如果...线性插值](http://stackoverflow.com/questions/11396860/better-way-than-if-else-if-else-for-linear-插值)。没有什么内置的,不......你必须环顾图书馆或写你自己的图书馆。 – HostileFork 2014-10-20 08:57:25

回答

0

你可以使用一个有序std::map。因此,对于给定数量n,获得它下面的映射条目(与lower_bound)和映射条目在它上面(有upper_bound,或简单地通过增加由lower_bound给出的迭代器),然后插。

你也可以使用它,你会被他们的关键已经整理对一个简单的载体或数组,然后编写一个dichotomical接入(二进制搜索)。这可能比std::map更快(例如由于缓存局部性)。

+0

一旦你得到'lower_bound'的结果,为什么你需要调用'upper_bound'?你得到一个迭代器,并且递增该迭代器已经给你正确的结果,不是吗? – hvd 2014-10-20 09:12:00

+0

谢谢,改进了我的答案! – 2014-10-20 09:16:27

+1

这是已知不是性能关键的代码的合理的第一近似值。但查找表通常是相当稳定的,这使得排序后的'std :: vector >是怀疑对性能至关重要的代码的最佳选择。 – MSalters 2014-10-20 11:06:53