std::forward_list::resize(3)

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

πŸ’– std::forward_list::resize(3) πŸ’–

okay so bestie, welcome to the C++ Standard Libary page for std::forward_list::resize πŸ’… this one is lowkey simple but you will understand it, fr fr.


✨ NAME ✨

std::forward_list::resize β€” std::forward_list::resize

like yes, the name is literally the name. iconic behavior tbh πŸŽ€


πŸ¦‹ Synopsis πŸ¦‹

two overloads, both since C++11, no cap:

void resize( size_type count );                          (1) (since C++11)
void resize( size_type count, const value_type& value ); (2) (since C++11)

So this resizes the container so it holds count elements. If count == std::distance(begin(), end()) β€” basically if count already equals the current size β€” it does absolutely nothing, periodt.

If the current size is greater than count, the container gets reduced to its first count elements.

If the current size is less than count:

  1. additional default-inserted elements are appended.
  2. additional copies of value are appended.

🌸 Parameters 🌸

  • count β€” new size of the container
  • value β€” the value to initialize the new elements with

πŸ’œ Type requirements πŸ’œ

  • T must meet the requirements of DefaultInsertable in order to use overload (1).
  • T must meet the requirements of CopyInsertable in order to use overload (2).

🫢 Return value 🫢

(none)

like, nothing. empty. no notes. πŸ’€


πŸ”₯ Complexity πŸ”₯

Linear in the difference between the current size and count. Additional complexity possible due to list traversal to reach the first element to erase/the end position to insert.


🌈 Notes 🌈

If value-initialization in overload (1) is undesirable β€” for example, if the elements are of non-class type and zeroing out is not needed β€” it can be avoided by providing a custom Allocator::construct. slay, customization πŸ’…


πŸŽ€ Example πŸŽ€

// Run this code

#include <forward_list>
#include <iostream>

void print(auto rem, const std::forward_list<int>& c)
{
    for (std::cout << rem; const int el : c)
        std::cout << el << ' ';
    std::cout << '\n';
}

int main()
{
    std::forward_list<int> c = {1, 2, 3};
    print("The forward_list holds: ", c);

    c.resize(5);
    print("After resize up to 5: ", c);

    c.resize(2);
    print("After resize down to 2: ", c);

    c.resize(6, 4);
    print("After resize up to 6 (initializer = 4): ", c);
}

Output

The forward_list holds: 1 2 3
After resize up to 5: 1 2 3 0 0
After resize down to 2: 1 2
After resize up to 6 (initializer = 4): 1 2 4 4 4 4

πŸ‘‘ See also πŸ‘‘

  • insert_after β€” inserts elements after an element (public member function)
  • erase_after β€” erases an element after an element (public member function)

mwah πŸ’‹ β€” source: http://cppreference.com; version/date: 2024.06.10; page: std::forward_list::resize(3) πŸ¦‹

πŸ“¦ where this page comes from