這裏我使用std::lower_bound()
創建了一個二進制搜索功能。如下所示。這工作正常,如果我通過std::pair
,但我只想執行二進制搜索pair
的第一個值。我在考慮在lower_bound()
的Comp
參數中可以做到這一點,但不能完全確定如何。lower_bound執行二進制搜索
即我的向量看起來像下面。
std::vector<std::pair<int,double>> v;
,我只是想比較即其是int
的第一個值。
template<class ForwardIt, class T>
ForwardIt binary_searcht(ForwardIt first, ForwardIt last, const T& value)
{
ForwardIt i = std::lower_bound(first, last, value);
if (i != last && !(value < *i))
return i;
else
return last;
}
任何你爲什麼定義函數作爲模板時,類型kn擁有?這只是使問題複雜化。 –
@MarkRansom因爲我需要返回一個iterator.noramal二分查找返回一個bool – CodersSC
夫婦備註:1)'lower_bound'預計'vector'預先被排序(匹配比較函數),2)標準庫支持比較如果'a.first :: min()});'沒有定義自己的比較(但它會被我懷疑的NaN拋出)。 –