所以我有一棵红黑树包含成对的
,当我调用
它将搜索的函数
(第一个和第二个),但我想让它忽略第二个值,只查找第一个值。我怎么才能做到这一点呢?
发布于 2015-01-18 07:08:22
一般来说,这是不可能的。但对于你有限的一对
你可以用下面的命令来伪装它
和
#include
#include
#include
#include
int main()
{
using key_type = std::pair;
std::set s { {1, -1}, {1, 3}, {2, 10}, {3, 42} };
auto it = s.upper_bound (key_type (2, std::numeric_limits::min ()));
std::cout << "(" << it->first << "; " << it->second << ")\n";
}在Coliru上直播
发布于 2021-03-02 12:07:46
auto fn = [](const pair&a, const pair &b) {
return a.first < b.first;
};
set, decltype(fn)> my_set(fn);我的
_
set现在是一个仅使用
作为关键
示例:
#include
#include
#include
using namespace std;
int main()
{
auto fn = [](const pair&a, const pair &b) {
return a.first < b.first;
};
set, decltype(fn)> my_set(fn);
my_set.insert({1, 123});
my_set.insert({4, 456});
my_set.insert({7, 789});
auto iter = my_set.find({4, 0});
if (iter != my_set.end()) {
cout << "first: " << iter->first << ", second: " << iter->second << "\n";
} else {
cout << "not found\n";
}
return 0;
}打印
first: 4, second: 456改变
只是
然后它会打印出来
当然,仅启用键控
可以说是一个
那么为什么不干脆这么做呢?
https://stackoverflow.com/questions/28005248
复制相似问题