std::deque::insert_range(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– std::deque::insert_range(3) β€” C++ Standard Libary πŸ’–

hiii bestie 🫢 welcome to the C++ Standard Libary page for std::deque::insert_range. The title and manual name are folded in right here at the top, and now we can get into the good stuff. πŸ’…


🌸 NAME 🌸

std::deque::insert_range β€” okay so this is the whole vibe: std::deque::insert_range. It said what it said. πŸ’–

✨ Synopsis ✨

template< container-compatible-range<T> R >           (since C++23)
iterator insert_range( const_iterator pos, R&& rg );

Inserts, in non-reversing order, copies of elements in rg before pos.

All iterators (including the end() iterator) are invalidated. References are invalidated too, unless pos == begin() or pos == end(), in which case they are not invalidated.

Each iterator in the range rg is dereferenced exactly once.

The behavior is undefined if rg overlaps with the container. no cap, that's a hard warning πŸ’€

πŸŽ€ Parameters πŸŽ€

  • pos β€” iterator before which the content will be inserted; pos may be the end() iterator.
  • rg β€” a container compatible range, that is, an input_range whose elements are convertible to T.

πŸ¦‹ Type requirements πŸ¦‹

  • T must be EmplaceConstructible into deque from *ranges::begin(rg). Also, T must be MoveInsertable into deque and T satisfies MoveConstructible, MoveAssignable, and Swappable. Otherwise, the behavior is undefined.

πŸ‘‘ Return value πŸ‘‘

An iterator that points at the copy of the first element inserted into deque 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 πŸ“

// Run this code

        #include <algorithm>
        #include <cassert>
        #include <iterator>
        #include <deque>
        #include <list>

        int main()
        {
            auto container = std::deque{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::deque{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: http://cppreference.com Β· date: 2024.06.10 Β· page: std::deque::insert_range(3). that's the cute little footer sign-off, bestie β€” bye! πŸ’…
πŸ“¦ where this page comes from