Skip to main content

std::vector assign() method

// (1) Non const version only
constexpr void assign( size_type count, const T& value );

// (2) Non const version only
template< class InputIt >
constexpr void assign( InputIt first, InputIt last );

// (3) Non const version only
constexpr void assign( std::initializer_list<T> ilist );

Replaces the contents of the container with the contents of another.

  • (1) Replaces the contents with count copies of value value.

  • (2) Replaces the contents with copies of those in the range [ first, last ).

    Undefined Behavior

    The behavior is undefined

    if either argument is an iterator into *this.

    This overload participates in overload resolution only if InputIt satisfies LegacyInputIterator.

  • (3) Replaces the contents with the elements from the initializer list ilist.

Invalidation

All iterators, pointers and references to the elements of the container are invalidated.
The past-the-end iterator is also invalidated.

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

Return value

(none)

Complexity

  • (1) Linear in count - O(count).
  • (2) Linear in distance between first and last - O(std::distance(firs,t last)).
  • (3) Linear in ilist.size() - O(ilist.size()).

Exceptions

(none)

Examples

Main.cpp
#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
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.

std::vector assign() method

// (1) Non const version only
constexpr void assign( size_type count, const T& value );

// (2) Non const version only
template< class InputIt >
constexpr void assign( InputIt first, InputIt last );

// (3) Non const version only
constexpr void assign( std::initializer_list<T> ilist );

Replaces the contents of the container with the contents of another.

  • (1) Replaces the contents with count copies of value value.

  • (2) Replaces the contents with copies of those in the range [ first, last ).

    Undefined Behavior

    The behavior is undefined

    if either argument is an iterator into *this.

    This overload participates in overload resolution only if InputIt satisfies LegacyInputIterator.

  • (3) Replaces the contents with the elements from the initializer list ilist.

Invalidation

All iterators, pointers and references to the elements of the container are invalidated.
The past-the-end iterator is also invalidated.

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

Return value

(none)

Complexity

  • (1) Linear in count - O(count).
  • (2) Linear in distance between first and last - O(std::distance(firs,t last)).
  • (3) Linear in ilist.size() - O(ilist.size()).

Exceptions

(none)

Examples

Main.cpp
#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
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.