std::vector::insert_range(3)
πΈ std::vector::insert_range(3) πΈ
okay bestie, welcome to the C++ Standard Libary page for std::vector::insert_range β yes, thatβs the manual name up top, typo and all, and we are not fixing it. π
This one is C++23 energy.
β¨ NAME β¨
std::vector::insert_range β std::vector::insert_range. Thatβs it, thatβs the name, iconic. π
π Synopsis π
template< container-compatible-range<T> R >
(since C++23)
constexpr iterator insert_range( const_iterator pos, R&& rg );
It inserts, in non-reversing order, copies of the elements in rg before pos. No reversing, no chaos β just copies in order. π¦
π«Ά Heads up: if after the operation the newsize()is greater than oldcapacity(), a reallocation takes place. In that case, all iterators (including theend()iterator) and all references to the elements are invalidated. Otherwise, only the iterators and references before the insertion point remain valid.
Each iterator in the range rg is dereferenced exactly once. Not twice, not a little extra β exactly once. π
π Undefined behavior alert: the behavior is undefined if rg overlaps with the container. Do not do the overlap thing, bestie.
π Parameters π
posβ iterator before which the content will be inserted (posmay be theend()iterator).rgβ a container compatible range, that is, aninput_rangewhose elements are convertible toT.
π Type requirements π
Tmust beEmplaceConstructibleintovectorfrom*ranges::begin(rg). Also,Tmust beMoveInsertableintovectorandTsatisfiesMoveConstructible,MoveAssignable, andSwappable. Otherwise, the behavior is undefined. π
β Return value β
An iterator that points at the copy of the first element inserted into vector or at pos if rg is empty.
π Notes π
- Feature-test macro:
__cpp_lib_containers_rangesβ Value:202202Lβ Std:(C++23)β Feature: Ranges-aware construction and insertion. π«Ά
π Example π
okay bestie, run this code:
// Run this code
#include <algorithm>
#include <cassert>
#include <iterator>
#include <vector>
#include <list>
int main()
{
auto container = std::vector{1, 2, 3, 4};
auto pos = std::next(container.begin(), 2);
assert(*pos == 3);
const auto rg = std::list{-1, -2, -3};
#ifdef __cpp_lib_containers_ranges
container.insert_range(pos, rg);
#else
container.insert(pos, rg.cbegin(), rg.cend());
#endif
assert(std::ranges::equal(container, std::vector{1, 2, -1, -2, -3,
3, 4}));
}
π See also π
insertβ inserts elements (public member function).append_rangeβ adds a range of elements to the end (C++23) (public member function).
kisses and sparkles, bestie β this pageβs source is http://cppreference.com, its date is 2024.06.10, and its title is std::vector::insert_range(3). bye bestie ππ
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms