Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::ranges::views::as_const,std::ranges::as_const_view

      From cppreference.com
      <cpp‎ |ranges
       
       
      Ranges library
      Range adaptors
       
      Defined in header<ranges>
      template<ranges::view V>

          requiresranges::input_range<V>
      class as_const_view

         :publicranges::view_interface<as_const_view<V>>
      (1)(since C++23)
      namespace views{

         inlineconstexpr/* unspecified */ as_const=/* unspecified */;

      }
      (2)(since C++23)
      Call signature
      template<ranges::viewable_range R>

          requires/* see below */

      constexprranges::viewauto as_const( R&& r);
      (since C++23)
      1) A range adaptor that represents a view of underlyingview that is also aconstant_range. Anas_const_view always has read-only elements (if not empty).
      2)RangeAdaptorObject. Lete be a subexpression, letT bedecltype((e)), and letU bestd::remove_cvref_t<T>. Then the expressionviews::as_const(e) isexpression-equivalent to:

      as_const_view always modelsconstant_range, and it models thecontiguous_range,random_access_range,bidirectional_range,forward_range,borrowed_range,common_range, andsized_range when the underlying viewV models respective concepts.

      Contents

      [edit]Data members

      Member Description
      Vbase_(private) the underlying view
      (exposition-only member object*)

      [edit]Member functions

      constructs anas_const_view
      (public member function)
      returns the underlying viewV
      (public member function)
      returns the beginning iterator of theas_const_view
      (public member function)
      returns the end iterator of theas_const_view
      (public member function)
      returns the size of the view if it is bounded
      (public member function)
      returns the approximate size of the underlyingapproximately_sized_range
      (public member function)
      Inherited fromstd::ranges::view_interface
      returns whether the derived view is empty, provided only if it satisfiessized_range orforward_range
      (public member function ofstd::ranges::view_interface<D>)[edit]
      (C++23)
      returns a constant iterator to the beginning of the range
      (public member function ofstd::ranges::view_interface<D>)[edit]
      (C++23)
      returns a sentinel for the constant iterator of the range
      (public member function ofstd::ranges::view_interface<D>)[edit]
      returns whether the derived view is not empty, provided only ifranges::empty is applicable to it
      (public member function ofstd::ranges::view_interface<D>)[edit]
      gets the address of derived view's data, provided only if its iterator type satisfiescontiguous_iterator
      (public member function ofstd::ranges::view_interface<D>)[edit]
      returns the first element in the derived view, provided if it satisfiesforward_range
      (public member function ofstd::ranges::view_interface<D>)[edit]
      returns the last element in the derived view, provided only if it satisfiesbidirectional_range andcommon_range
      (public member function ofstd::ranges::view_interface<D>)[edit]
      returns thenth element in the derived view, provided only if it satisfiesrandom_access_range
      (public member function ofstd::ranges::view_interface<D>)[edit]

      std::ranges::as_const_view::as_const_view

      as_const_view() requiresstd::default_initializable<V>=default;
      (1)(since C++23)
      constexprexplicit as_const_view( V base);
      (2)(since C++23)
      1) Value-initializesbase_  via its default member initializer (= V()).
      2) Initializesbase_  withstd::move(base).

      Parameters

      base - a view

      std::ranges::as_const_view::base

      constexpr V base()const& requiresstd::copy_constructible<V>;
      (1)(since C++23)
      constexpr V base()&&;
      (2)(since C++23)

      Returns the underlying view.

      1) Copy-constructs the result from the underlying view. Equivalent toreturn base_ ;.
      2) Move-constructs the result from the underlying view. Equivalent toreturn std::move(base_ );.

      std::ranges::as_const_view::begin

      constexprauto begin() requires(!/*simple_view*/<V>);
      (1)(since C++23)
      constexprauto begin()const requiresranges::range<const V>;
      (2)(since C++23)

      Returns the constant iterator of the view. Equivalent toreturnranges::cbegin(base_ );.

      std::ranges::as_const_view::end

      constexprauto end() requires(!/*simple_view*/<V>);
      (1)(since C++23)
      constexprauto end()const requiresranges::range<const V>;
      (2)(since C++23)

      Returns the constant sentinel of the view. Equivalent toreturnranges::cend(base_ );.

      std::ranges::as_const_view::size

      constexprauto size() requiresranges::sized_range<V>;
      (1)(since C++23)
      constexprauto size()const requiresranges::sized_range<const V>;
      (2)(since C++23)

      Returns the size of the view if the view is bounded. Equivalent toreturnranges::size(base_ );.

      std::ranges::as_rvalue_view::reserve_hint

      constexprauto reserve_hint()
          requires ranges::approximately_sized_range<V>;
      (1)(since C++26)
      constexprauto reserve_hint()const
          requires ranges::approximately_sized_range<const V>;
      (2)(since C++26)

      Returnsranges::reserve_hint(base_ ).

      [edit]Deduction guides

      template<class R>
      as_const_view( R&&)-> as_const_view<views::all_t<R>>;
      (since C++23)

      [edit]Helper templates

      template<class T>

      constexprbool enable_borrowed_range<std::ranges::as_const_view<T>>=

         ranges::enable_borrowed_range<T>;
      (since C++23)

      This specialization ofranges::enable_borrowed_range makesas_const_view satisfyborrowed_range when the underlying view satisfies it.

      [edit]Notes

      Feature-test macroValueStdFeature
      __cpp_lib_ranges_as_const202207L(C++23)ranges::as_const_view,std::const_iterator
      __cpp_lib_ranges_reserve_hint202502L(C++26)ranges::approximately_sized_range andreserve_hint

      [edit]Example

      Run this code
      #include <cassert>#include <ranges> int main(){int x[]{1,2,3,4,5}; auto v1= x| std::views::drop(2);assert(v1.back()==5);    v1[0]++;// OK, can modify non-const element auto v2= x| std::views::drop(2)| std::views::as_const;assert(v2.back()==5);// v2[0]++; // Compile-time error, cannot modify read-only element}

      [edit]See also

      aview of a sequence that casts each element to an rvalue
      (class template)(range adaptor object)[edit]
      returns an iterator to the beginning of a read-only range
      (customization point object)[edit]
      returns a sentinel indicating the end of a read-only range
      (customization point object)[edit]
      (C++17)
      obtains a reference toconst to its argument
      (function template)[edit]
      iterator adaptor that converts an iterator into a constant iterator
      (class template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/as_const_view&oldid=182382"

      [8]ページ先頭

      ©2009-2025 Movatter.jp