簡體   English   中英

在C ++中二進制搜索具有給定元素值的元組

[英]Binary Search for a tuple with a given element value in C++

我想在其中找到所有元組:

vector<tuple<int,int>> tuples; //already sorted

將下一個命題評估為“ true”:

(get<0>(tuple) == val)

我正在嘗試使用equal_range函數來獲取范圍:

equal_range (tuples.begin(), tuples.end(), val);

如何在元組的第一個元素中正確表達“ val”以進行值比較?

您可以創建一個元組並忽略其最后一個元素,如下所示:

#include <tuple>
#include <algorithm>
#include <vector>
#include <functional>

int main()
{
    std::vector<std::tuple<int, int>> v = {{1,0}, {2,3}, {4,5}};

    const int val = 2;

    std::equal_range(v.cbegin(), v.cend(),
        std::make_tuple(std::cref(val), 0),
        [&val] (const auto& l, const auto& r) {
            return std::get<0>(l) < std::get<0>(r);
        });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM