#include <ranges>
#include <map>
#include <string>
#include <iostream>
int main() {
std::map<int, std::string> m = {{1, "one"}, {2, "two"}, {3, "three"}};
// (1) デフォルトコンストラクタ
std::ranges::elements_view<std::ranges::empty_view<std::pair<int, std::string>>, 0> ev1;
// (2) 元となるRangeを受け取るコンストラクタ
std::ranges::elements_view<std::views::all_t<std::map<int, std::string>&>, 0> ev2(m);
// keys_viewを使用
for (int key : ev2) {
std::cout << key << " ";
}
std::cout << std::endl;
// values_viewを使用
std::ranges::values_view vv(m);
for (const std::string& value : vv) {
std::cout << value << " ";
}
std::cout << std::endl;
}