A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../../cpp/container/inplace_vector/assign.html below:

std::inplace_vector<T,N>::assign - cppreference.com

constexpr void assign( size_type count, const T& value );

(1) (since C++26)

template< class InputIt >
constexpr void assign( InputIt first, InputIt last );

(2) (since C++26) (3) (since C++26)

Replaces the contents of the container.

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

2) Replaces the contents with copies of those in the range [firstlast).

This overload participates in overload resolution only if

InputIt

satisfies the requirements of

LegacyInputIterator

.

If first or last is an iterator into *this, the behavior is undefined.

3) Replaces the contents with the elements from ilist.

[edit] Parameters count - the new size of the container value - the value to initialize elements of the container with first, last - the pair of iterators defining the source range of elements to copy ilist - std::initializer_list to copy the values from [edit] Complexity

1) Linear in count.

2) Linear in distance between first and last.

3) Linear in ilist.size().

Exceptions

1-3) Any exception thrown by initialization of inserted elements.

[edit] Example

The following code uses assign to add several characters to a std::inplace_vector<char, 5>:

#include <inplace_vector>
#include <iterator>
#include <new>
#include <print>
 
int main()
{
    std::inplace_vector<char, 5> chars;
 
    chars.assign(4, 'a'); // overload (1)
    std::println("{}", chars);
 
    const char extra[3]{'a', 'b', 'c'};
    chars.assign(std::cbegin(extra), std::cend(extra)); // overload (2)
    std::println("{}", chars);
 
    chars.assign({'C', '+', '+', '2', '6'}); // overload (3)
    std::println("{}", chars);
 
    try
    {
        chars.assign(8, 'x'); // throws: count > chars.capacity()
    }
    catch(const std::bad_alloc&) { std::println("std::bad_alloc #1"); }
 
    try
    {
        const char bad[8]{'?'}; // ranges::distance(bad) > chars.capacity()
        chars.assign(std::cbegin(bad), std::cend(bad)); // throws
    }
    catch(const std::bad_alloc&) { std::println("std::bad_alloc #2"); }
 
    try
    {
        const auto l = {'1', '2', '3', '4', '5', '6'};
        chars.assign(l); // throws: l.size() > chars.capacity()
    }
    catch(const std::bad_alloc&) { std::println("std::bad_alloc #3"); }
}

Output:

['a', 'a', 'a', 'a']
['a', 'b', 'c']
['C', '+', '+', '2', '6']
std::bad_alloc #1
std::bad_alloc #2
std::bad_alloc #3
[edit] See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4