Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::reverse_iterator<Iter>::operator[]

      From cppreference.com
      <cpp‎ |iterator‎ |reverse iterator
       
       
      Iterator library
      Iterator concepts
      Iterator primitives
      Algorithm concepts and utilities
      Indirect callable concepts
      Common algorithm requirements
      (C++20)
      (C++20)
      (C++20)
      Utilities
      (C++20)
      Iterator adaptors
      Range access
      (C++11)(C++14)
      (C++14)(C++14)  
      (C++11)(C++14)
      (C++14)(C++14)  
      (C++17)(C++20)
      (C++17)
      (C++17)
       
       
      /* unspecified */ operator[]( difference_type n)const;
      (constexpr since C++17)

      Returns a reference to the element at specified relative location.

      Contents

      [edit]Parameters

      n - position relative to current location

      [edit]Return value

      current[-n-1]

      [edit]Notes

      The return type was changed byLWG issue 386 to be unspecified because the return type of the underlying iterator'soperator[] was also unspecified at the time.

      However, as ofN3066, the return type of aLegacyRandomAccessIterator'soperator[] is required to be convertible toreference. In all common implementations, the return type is declared to bereference. See alsoLWG issue 2595.

      [edit]Example

      Run this code
      #include <array>#include <cstddef>#include <iostream>#include <iterator>#include <list>#include <vector> int main(){int a[]{0,1,2,3};std::reverse_iterator<int*> iter1{std::rbegin(a)};for(std::size_t i{}; i!=std::size(a);++i)std::cout<< iter1[i]<<' ';// decltype(iter1[i]) is int&std::cout<<'\n'; std::vector v{0,1,2,3};std::reverse_iterator<std::vector<int>::iterator> iter2{std::rbegin(v)};for(std::size_t i{}; i!=std::size(v);++i)std::cout<< iter2[i]<<' ';// decltype(iter2[i]) is int&std::cout<<'\n'; // constexpr contextconstexprstaticstd::array<int,4> z{0,1,2,3};constexprstd::reverse_iterator<decltype(z)::const_iterator> iter3{std::crbegin(z)};    static_assert(iter3[1]==2); std::list li{0,1,2,3};std::reverse_iterator<std::list<int>::iterator> iter4{std::rbegin(li)};*iter4=42;// OK//  iter4[0] = 13; // Compilation error: the underlying iterator// does not model the random access iterator}

      Output:

      3 2 1 03 2 1 0

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 386C++98the return type wasreferencemade unspecified

      [edit]See also

      accesses the pointed-to element
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/iterator/reverse_iterator/operator_at&oldid=177408"

      [8]ページ先頭

      ©2009-2025 Movatter.jp