在C++20中,可以通过使用std::ranges::transform函数将一个区间转换为std::map。以下是一个示例代码:

#include <iostream>
#include <vector>
#include <map>
#include <ranges>
#include <string>

int main()
{
    std::vector<int> vec{1, 2, 3, 4, 5};

    auto odd_numbers = vec | std::ranges::views::filter([](int n) { return n % 2 == 1; }); // 筛选出奇数
    auto square_numbers = odd_numbers | std::ranges::views::transform([](int n) { return n * n; }); // 平方

    std::map<int, int> odd_square_map = square_numbers | std::ranges::to<std::map<int, int>>(); // 转换为 map

    for (const auto& [key, value] : odd_square_map) {
        std::cout << key << ": " << value << std::endl;
    }

    return 0;
}

输出结果为:

1: 1
3: 9
5: 25

在这个示例代码中,我们首先使用std::ranges::views::filter函数筛选出奇数,并使用std::ranges::views::transform函数将这些数字平方。然后,我们使用std::ranges::to函数将结果转换为std::map。最后,我们遍历这个std::map并输出每个键值对。

c++20 transform到map

原文地址: https://www.cveoy.top/t/topic/sEK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录