在 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);
        });
}