std::ranges::to — convert a range to a container type.
1#include <ranges>23std::vector<int> source = {1, 2, 3, 4, 5};45// To std::set6auto s = source | std::ranges::to<std::set>();78// To std::map with transform9auto m = source10 | std::views::transform([](int x) {11 return std::pair(x, x * x);12 })13 | std::ranges::to<std::map>();1415// To std::string16std::string str = source17 | std::views::transform([](int x) { return char(x + '0'); })18 | std::ranges::to<std::string>();1920// To std::deque21auto dq = source | std::ranges::to<std::deque<int>>();2223// To std::vector with allocator24auto vec = source25 | std::ranges::to<std::vector<int, std::allocator<int>>>();2627// Pipeline style28auto result = std::views::iota(1, 6)29 | std::views::filter([](int n) { return n % 2 == 0; })30 | std::ranges::to<std::vector>();31// result = {2, 4, 6}
Key feature: