std::deque::assign(3)

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

πŸ’– NAME πŸ’–

okay so bestie, this is std::deque::assign β€” and yes, the name is literally std::deque::assign. It’s from the C++ Standard Libary manual (that spelling is right there in the header, don’t come for me), and the page title is std::deque::assign(3). Slay.


✨ Synopsis ✨

void assign( size_type count, const T& value ); (1)
template< class InputIt >                       (2)
void assign( InputIt first, InputIt last );
void assign( std::initializer_list<T> ilist );  (3) (since C++11)

It replaces the contents of the container. Periodt. πŸ’…

  1. Replaces the contents with count copies of value.
  2. Replaces the contents with copies of those in the range [first, last). The behavior is undefined if either argument is an iterator into *this. 😭
    • Until C++11: this overload has the same effect as overload (1) if InputIt is an integral type.
    • Since C++11: this overload participates in overload resolution only if InputIt satisfies LegacyInputIterator.
  3. Replaces the contents with the elements from the initializer list ilist.
⚠️ warning bestie: all iterators, pointers and references to the elements of the container are invalidated. The past-the-end iterator is also invalidated. Like, do not keep using them after this. πŸ’€

πŸŽ€ Parameters πŸŽ€

  • count β€” the new size of the container.
  • value β€” the value to initialize elements of the container with.
  • first, last β€” the range to copy the elements from.
  • ilist β€” initializer list to copy the values from.

πŸ”₯ Complexity πŸ”₯

  1. Linear in count.
  2. Linear in distance between first and last.
  3. Linear in ilist.size().

🌈 Example 🌈

The following code uses assign to add several characters to a std::deque<char>. The original has a // Run this code marker, so bestie, go run it πŸ‘‡

#include <deque>
#include <iostream>
#include <string>

int main()
{
    std::deque<char> characters;

    auto print_deque = [&]()
    {
        for (char c : characters)
            std::cout << c << ' ';
        std::cout << '\n';
    };

    characters.assign(5, 'a');
    print_deque();

    const std::string extra(6, 'b');
    characters.assign(extra.begin(), extra.end());
    print_deque();

    characters.assign({'C', '+', '+', '1', '1'});
    print_deque();
}

Output:

a a a a a
b b b b b b
C + + 1 1

πŸ‘‘ See also πŸ‘‘

  • constructor β€” constructs the deque (public member function).

made with πŸ’– by cppreference.com Β· source/version: cppreference.com Β· date: 2024.06.10 Β· your fave std::deque::assign(3) page 🫢✨

πŸ“¦ where this page comes from