• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <ranges>

    std::ranges::subrange::prev

    [[nodiscard]]
    constexpr subrange
      prev(iter_difference_t<I> n = 1) const
        requires bidirectional_iterator<I>;   // (1) C++20
    constexpr subrange
      prev(iter_difference_t<I> n = 1) const
        requires bidirectional_iterator<I>;   // (1) C++26
    

    概要

    先頭を後退させたsubrangeを得る。

    効果

    auto tmp = *this;
    tmp.advance(-n);
    return tmp;
    

    #include <ranges>
    #include <iostream>
    
    template<std::ranges::range R>
    void print(const R& r) {
      for (int x : r) {
        std::cout << x << ',';
      }
      std::cout << '\n';
    }
    
    int main()
    {
      constexpr int a[] = {1, 2, 3, 4, 5};
      std::ranges::subrange sub(a + 3, a + 4);
    
      print(sub);
      print(sub.prev());
      print(sub.prev().prev());
    }
    

    出力

    4,
    3,4,
    2,3,4,
    

    バージョン

    言語

    • C++20

    処理系

    参照