- ranges[meta header]
- std::ranges[meta namespace]
- elements_view[meta class]
- function[meta id-type]
- cpp20[meta cpp]
elements_view()
requires default_initializable<V> = default; // (1) C++20
constexpr explicit
elements_view(V base); // (2) C++20
- (1) : デフォルトコンストラクタ
- (2) : 元となるRangeを受け取るコンストラクタ
- (1) :
base_をデフォルト構築する
- (2) :
base_をstd::move(base)で初期化する
#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;
}
- std::ranges::elements_view[color ff0000]
- Clang: 13.0.0 [mark verified]
- GCC: 10.1.0 [mark verified]
- ICC: ?
- Visual C++: 2019 Update 10 [mark verified]