Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::ranges::crbegin

      From cppreference.com
      <cpp‎ |ranges
       
       
      Ranges library
      Range adaptors
       
      Defined in header<ranges>
      Defined in header<iterator>
      inlinenamespace/* unspecified */{

         inlineconstexpr/* unspecified */ crbegin=/* unspecified */;

      }
      (since C++20)
      (customization point object)
      Call signature
      template<class T>

          requires/* see below */

      constexpr/* see below */auto crbegin( T&& t);
      (since C++20)

      Returns an iterator to the first element of the const-qualified argument that is treated as a reversed sequence.

      (until C++23)

      Returns a constant iterator to the first element of the argument that is treated as a reversed sequence.

      (since C++23)

      range-rbegin-rend.svg

      LetCT be

      • conststd::remove_reference_t<T>& if the argument is an lvalue (i.e.T is an lvalue reference type),
      • const T otherwise.

      A call toranges::crbegin isexpression-equivalent toranges::rbegin(static_cast<CT&&>(t)).

      (until C++23)

      If the argument is an lvalue orranges::enable_borrowed_range<std::remove_cv_t<T>> istrue, then a call toranges::crbegin isexpression-equivalent to:

      In all other cases, a call toranges::crbegin is ill-formed, which can result insubstitution failure when the call appears in the immediate context of a template instantiation.

      (since C++23)

      The return type modelsstd::input_or_output_iterator andconstant-iterator(since C++23) in all cases.

      Customization point objects

      The nameranges::crbegin denotes acustomization point object, which is a constfunction object of aliteralsemiregular class type. SeeCustomizationPointObject for details.

      [edit]Example

      Run this code
      #include <cassert>#include <iterator>#include <span>#include <vector> int main(){std::vector<int> v{3,1,4};auto vi= std::ranges::crbegin(v);assert(*vi==4);++vi;// OK, iterator object is mutableassert(*vi==1);// *vi = 13; // Error: underlying element is read-only int a[]{-5,10,15};auto ai= std::ranges::crbegin(a);assert(*ai==15); // auto x_x = std::ranges::crbegin(std::vector<int>{6, 6, 6});// ill-formed: the argument is an rvalue (see Notes ↑) auto si= std::ranges::crbegin(std::span{a});// OKassert(*si==15);    static_assert(        std::ranges::enable_borrowed_range<std::remove_cv_t<decltype(std::span{a})>>);}

      [edit]See also

      returns a reverse iterator to a range
      (customization point object)[edit]
      returns a reverse iterator to the beginning of a container or array
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/crbegin&oldid=179361"

      [8]ページ先頭

      ©2009-2025 Movatter.jp