std::forward_list::assign(3)

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

✨ NAME ✨

std::forward_list::assign β€” std::forward_list::assign (yes bestie, that's literally the name, from the C++ Standard Libary manual's std::forward_list::assign(3) page πŸ’…βœ¨).

πŸ¦‹ Synopsis πŸ¦‹

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

Okay so this member function replaces the contents of the container β€” like, the whole vibe gets swapped out, no cap πŸ’….

  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.
    • 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. Overload (3): replaces the contents with the elements from the initializer list ilist.
🚨 Important vibe check: all iterators, pointers and references to the elements of the container are invalidated. Every single one, bestie β€” do not go 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 🧚

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

πŸ’– Example πŸ’–

The following code uses assign to add several characters to a std::forward_list<char>:

       // Run this code

        #include <forward_list>
        #include <iostream>
        #include <string>

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

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

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

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

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

Output:

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

πŸ‘€ See also πŸ‘€

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

mwah πŸ’‹ β€” signed off from http://cppreference.com, dated 2024.06.10 ✨. Stay shiny, bestie 🫢.

πŸ“¦ where this page comes from