使用std::Range::Min在std::map上投影

2022-05-16 00:00:00 c++ c++20 std-ranges

可以在std::map上投影吗?我尝试使用std::Range::Min投影,但它似乎抛出了错误,我无法解释它为什么不喜欢东西。

#include <set>
#include <iostream>
#include <ranges> 
#include <vector>
#include <iostream>
#include <map>
#include <algorithm>

int main()
{
    std::map<int, int> usage_table;
    auto lowest = std::ranges::min( std::move(usage_table), 
                                   {}, 
                                   &std::map<int,int>::value_type::second );
}

我可以解决这个问题,但如果这个衬垫能用就好了。

最佳


解决方案

您可以像这样使用std::ranges::min_element来代替std::ranges::min

auto lowest = *std::ranges::min_element(std::move(usage_table), 
                                        {}, 
                                        &std::map<int,int>::value_type::second);

此外,还不清楚您为什么要movemap,它似乎没有做任何有用的事情。

相关文章