std::list::insert_range(3)
okay so bestie π
welcome to std::list::insert_range(3) from the C++ Standard Libary β yes, thatβs the manual name, and it is giving C++23 range-insertion excellence. This is the page for std::list::insert_range, and weβre gonna go through every lil detail together π«Ά.
NAME
std::list::insert_range β std::list::insert_range (the name is literally the name, iconic π).
β¨ Synopsis β¨
template< container-compatible-range<T> R > (since C++23)
iterator insert_range( const_iterator pos, R&& rg );
okay so what does it do? It inserts, in non-reversing order, copies of elements in rg before pos π
.
No iterators or references are invalidated β slay, nothing gets messed up β¨.
Each iterator in the range rg is dereferenced exactly once. Every. Single. One. No double-dipping π.
behavior is undefined if rg overlaps with the container. like, do NOT do that, 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 beEmplaceConstructibleintolistfrom*ranges::begin(rg). Otherwise, the behavior is undefined.
this is a hard requirement, no vibes-based workaround π
Return value
An iterator that points at the copy of the first element inserted into list or at pos if rg is empty π.
Notes
Feature-test macro check β :
__cpp_lib_containers_rangesβ value202202L, std(C++23), feature: Ranges-aware construction and insertion π
Example
example time, bestie π
// Run this code
#include <algorithm>
#include <cassert>
#include <iterator>
#include <list>
#include <vector>
int main()
{
auto container = std::list{1, 2, 3, 4};
auto pos = std::next(container.begin(), 2);
assert(*pos == 3);
const auto rg = std::vector{-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::list{1, 2, -1, -2, -3, 3,
4}));
}
See also
insertβ inserts elements (public member function)prepend_range(C++23) β adds a range of elements to the beginning (public member function)append_range(C++23) β adds a range of elements to the end (public member function)
source/version/date check, bestie: http://cppreference.com, 2024.06.10, page std::list::insert_range(3) β mwah π byeee π«Ά
π¦ 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