gpt4 book ai didi

c++ - is_transparent 在部分 key 方面的合法使用

转载 作者:太空狗 更新时间:2023-10-29 21:31:47 25 4
gpt4 key购买 nike

如果我有一个 std::set<std::pair<A, B>, compare>并希望从 element.first == some_a 的集合中检索一系列值, 它会被视为对 is_transparent 的正确有效使用吗?用

定义比较函数
struct compare {
using is_transparent = void;
bool operator()(const std::pair<A,B> &l, const std::pair<A,B> &r) const {
return l < r;
}
bool operator()(const std::pair<A,B> &l, const A& r) const {
return l.first < r;
}
bool operator()(const A &l, const std::pair<A,B>& r) const {
return l < r.first;
}
};

然后使用 lower_bound(some_a)/upper_bound(some_a) ?或者这会是该功能的越野使用并且未定义吗?

这种方法的动机是它是通用的,因此我没有最小 B 或后继 A 的必要可用性,这将允许其他方法,例如 lower_bound(make_pair(some_a, min_b)) lower_bound(make_pair(successor(some_a), min_b))

最佳答案

标准explicitly allows “键”值仅在一个方向上与容器中的键相关,只要结果分区与容器的顺序一致。特别是,lower_bound 仅使用您的异构 operator() 之一; upper_bound 使用(仅)另一个。

关于c++ - is_transparent 在部分 key 方面的合法使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57263951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com