Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::vector<T,Allocator>::append_range

      From cppreference.com
      <cpp‎ |container‎ |vector

      [edit template]
       
       
       
      std::vector
      Member types
      Member functions
      Non-member functions
      (until C++20)(until C++20)(until C++20)(until C++20)(until C++20)
      Deduction guides(C++17)
       
      template<container-compatible-range<T> R>
      constexprvoid append_range( R&& rg);
      (since C++23)

      Inserts copies of elements from the rangerg beforeend(), in non-reversing order.

      If after the operation the newsize() is greater than oldcapacity() a reallocation takes place, in which case all iterators (including theend() iterator) and all references to the elements are invalidated. Otherwise only theend() iterator is invalidated.

      Each iterator inrg is dereferenced exactly once.

      Contents

      [edit]Parameters

      rg - acontainer compatible range, that is, aninput_range whose elements are convertible toT
      Type requirements
      -
      If any of the following conditions is satisfied, the behavior is undefined:

      [edit]Complexity

      If reallocation happens, linear in the number of elements of the resultingvector; otherwise, linear in the number of elements inserted plus the distance to theend().

      If one of the following conditions is satisfied, performs at most one reallocation:

      (since C++26)

      [edit]Exceptions

      If an exception is thrown other than by the copy constructor, move constructor, assignment operator, or move assignment operator ofT or by anyInputIterator operation there are no effects. If an exception is thrown while inserting a single element at the end andT isCopyInsertable orstd::is_nothrow_move_constructible_v<T> istrue, there are no effects. Otherwise, if an exception is thrown by the move constructor of a non-CopyInsertableT, the effects are unspecified.

      Notes

      Feature-test macroValueStdFeature
      __cpp_lib_containers_ranges202202L(C++23)Ranges-aware construction and insertion

      [edit]Example

      Run this code
      #include <cassert>#include <vector>#include <list> int main(){auto head=std::vector{1,2,3,4};constauto tail=std::list{-5,-6,-7};#ifdef __cpp_lib_containers_ranges    head.append_range(tail);#else    head.insert(head.end(), tail.cbegin(), tail.cend());#endifassert((head==std::vector{1,2,3,4,-5,-6,-7}));}

      [edit]See also

      inserts a range of elements
      (public member function)
      adds an element to the end
      (public member function)
      constructs an element in-place at the end
      (public member function)
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/vector/append_range&oldid=155591"

      [8]ページ先頭

      ©2009-2025 Movatter.jp