Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::ranges::cbegin

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

         inlineconstexpr/* unspecified */ cbegin=/* unspecified */;

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

          requires/* see below */

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

      Returns an iterator to the first element of the const-qualified argument.

      (until C++23)

      Returns a constant iterator to the first element of the argument.

      (since C++23)

      range-begin-end.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::cbegin isexpression-equivalent toranges::begin(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::cbegin isexpression-equivalent to:

      In all other cases, a call toranges::cbegin 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.

      Contents

      Customization point objects

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

      [edit]Notes

      For an lvalue rangee of typeT,ranges::cbegin(e) is equivalent to

      ranges::begin(std::as_const(e)).

      (until C++23)
      (since C++23)

      [edit]Example

      Run this code
      #include <cassert>#include <ranges>#include <vector> int main(){std::vector v{3,1,4};auto vi= std::ranges::cbegin(v);assert(3==*vi);++vi;// OK, constant-iterator object is mutableassert(1==*vi);// *vi = 13; // Error: constant-iterator points to an immutable element int a[]{3,1,4};auto ai= std::ranges::cbegin(a);// cbegin works with C-arrays as wellassert(3==*ai and*(ai+1)==1);// *ai = 13; // Error: read-only variable is not assignable}

      [edit]See also

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

      [8]ページ先頭

      ©2009-2025 Movatter.jp