我想在以下位置找到所有元组:
vector<tuple<int,int>> tuples; //already sorted
将下一个命题评估为“真”:
(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);
});
}
关于c++ - 在 C++ 中二进制搜索具有给定元素值的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46555428/