Microsoft Visual Studio 2019 Community 16.9.0 Preview 3におけるstd::ranges::subrange
のメンバー関数使用例です。
#include <ranges> #include <vector> int main() { std::vector v{ 0, 1, 2, 3, 4 }; // std::ranges::subrange r{ v }; std::ranges::subrange r(v.cbegin(), v.cend()); // イテレーターの取得 auto begin = r.begin(); // v.cbegin() auto end = r.end(); // v.cend() auto pair = std::tuple(r); // {v.cbegin(), v.cend()} // データの取得(std::contiguous_iterator限定) auto p = r.data(); // &v[0](厳密にはstd::addressof) // 空判定やサイズの取得 auto empty = r.empty(); // false auto size = r.size(); // 5 auto f = (bool)r; // true // 先頭を前後に動かした新しいsubrangeの作成 auto next = r.next(3); // {std::next(v.cbegin(), 3), v.cend()} auto next_prev = next.prev(2); // {std::prev(std::next(v.cbegin(), 3), 2), v.cend()} // 先頭を前後に動かして参照の返却 auto adv1 = r.advance(3); // r = {std::next(v.cbegin(), 3), v.cend()} auto adv2 = r.advance(-3); // r = {v.cbegin(), v.cend()} // 先頭/末尾/特定位置要素の取得 auto front = r.front(); // 0 auto back = r.back(); // 4 auto elem3 = r[3]; // 3 }