gpt4 book ai didi

c++ - 是否有采用投影函数的 min_element 变体?

转载 作者:可可西里 更新时间:2023-11-01 17:41:27 34 4
gpt4 key购买 nike

std::min_element将返回由 operator<(T,T) 定义的最小元素或通过自定义谓词 bool Pred(T,T) .是否有类似的函数返回投影函数 f(T)->R 所针对的元素取最小值?

显然我可以定义 bool Pred(t1,t2) { return f(t1) < f(t2); }但当 f 是 lambda 时,这有点不方便。

最佳答案

为什么不使用来自 Boost.Iterator libraryboost::transform_iterator(以前称为 projection_iterator_adaptor)

auto Pred = [](some_value_type const& x){ /* your lambda here */ };
auto result = std::min_element(
boost::make_transform_iterator(begin(container), Pred),
boost::make_transform_iterator(end(container), Pred)
).base();
//^^^^^^^ <-- to get back an iterator to the original sequence

与编写特殊的 less 谓词相比,这种方法的优势在于您可以将此方法重用于所有其他算法(例如,对于 std::max_element,您将需要一个特殊的 greater 谓词等)。

关于c++ - 是否有采用投影函数的 min_element 变体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17720283/

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