std::vector::assign(3)

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

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

okay bestie, this is the C++ Standard Libary manual page for std::vector::assign, and it's lowkey iconic ✨

🌸 NAME 🌸

std::vector::assign β€” literally std::vector::assign, the member function that gives your vector a whole new set of contents πŸ’…

✨ Synopsis ✨

okay so the overloads are giving main character energy:

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

Replaces the contents of the container. periodt.

  1. Overload (1): replaces the contents with count copies of the value value 🫢
  2. Overload (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 😭

This overload has the same effect as overload (1) if InputIt is an integral type. (until C++11)

This overload participates in overload resolution only if InputIt satisfies LegacyInputIterator. (since C++11)

  1. Overload (3): replaces the contents with the elements from the initializer list ilist πŸŽ€
⚠️ All iterators, pointers and references to the elements of the container are invalidated. The past-the-end iterator is also invalidated. no cap, that's the whole vibe check πŸ’€

πŸŽ€ 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::vector<char>:

// Run this code

#include <vector>
#include <iostream>
#include <string>

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

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

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

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

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

🌈 Output 🌈

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

πŸ‘€ See also πŸ‘€

  • constructor β€” constructs the vector (public member function) 🫢

source/version/date: http://cppreference.com, 2024.06.10, page std::vector::assign(3) β€” bye bestie, go slay some vectors πŸ’–

πŸ“¦ where this page comes from