2014-10-20 85 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