Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      iter_move(std::move_iterator)

      From cppreference.com
      <cpp‎ |iterator‎ |move 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)
       
       
      friendconstexprstd::iter_rvalue_reference_t<Iter>
          iter_move(conststd::move_iterator& i)noexcept(/* see below */);
      (since C++20)

      Casts the result of dereferencing the underlying iterator to its associated rvalue reference type.

      Equivalent toreturn std::ranges::iter_move(i.base());.

      This function template is not visible to ordinaryunqualified orqualified lookup, and can only be found byargument-dependent lookup whenstd::move_iterator<Iter> is an associated class of the arguments.

      Contents

      [edit]Parameters

      i - a source move iterator

      [edit]Return value

      An rvalue reference or a prvalue temporary.

      [edit]Complexity

      Constant.

      [edit]Exceptions

      noexcept specification:  
      noexcept(noexcept(ranges::iter_move(i.base())))

      [edit]Example

      Run this code
      #include <iomanip>#include <iostream>#include <iterator>#include <string>#include <vector> void print(constauto& rem,constauto& v){std::cout<< rem<<'['<< size(v)<<"] { ";for(char comma[]{0,' ',0};constauto& s: v)std::cout<< comma<<std::quoted(s), comma[0]=',';std::cout<<" }\n";} int main(){std::vector<std::string> p{"Andromeda","Cassiopeia","Phoenix"}, q;     print("p", p), print("q", q); using MI=std::move_iterator<std::vector<std::string>::iterator>; for(MI first{p.begin()}, last{p.end()}; first!= last;++first)        q.emplace_back(/* ADL */ iter_move(first));     print("p", p), print("q", q);}

      Possible output:

      p[3] { "Andromeda", "Cassiopeia", "Phoenix" }q[0] {  }p[3] { "", "", "" }q[3] { "Andromeda", "Cassiopeia", "Phoenix" }

      [edit]See also

      (C++20)
      casts the result of dereferencing an object to its associated rvalue reference type
      (customization point object)[edit]
      (C++20)
      casts the result of dereferencing the adjusted underlying iterator to its associated rvalue reference type
      (function)[edit]
      (C++11)
      converts the argument to an xvalue
      (function template)[edit]
      converts the argument to an xvalue if the move constructor does not throw
      (function template)[edit]
      (C++11)
      forwards a function argument and use the type template argument to preserve its value category
      (function template)[edit]
      moves a range of elements to a new location
      (algorithm function object)[edit]
      moves a range of elements to a new location in backwards order
      (algorithm function object)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/iterator/move_iterator/iter_move&oldid=177528"

      [8]ページ先頭

      ©2009-2026 Movatter.jp