A RetroSearch Logo

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

Search Query:

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

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

template< class... Args >
constexpr iterator emplace( const_iterator position, Args&&... args );

(since C++26)

Inserts a new element into the container directly before pos. Typically, the element is constructed uses placement new to construct the element in-place at the location provided by the container. The arguments args... are forwarded to the constructor as std::forward<Args>(args)....

[edit] Parameters [edit] Return value

An iterator to the inserted element.

[edit] Complexity

Linear in the distance between pos and end().

[edit] Exceptions

Throws std::bad_alloc if before the invocation size() == capacity(). The function has no effects (strong exception safety guarantee).

Any exception thrown by initialization of inserted element or by any LegacyInputIterator operation. Elements in [​0​pos) are not modified.

[edit] Example
#include <cassert>
#include <inplace_vector>
#include <new>
#include <utility>
 
int main()
{
    using P = std::pair<int, int>;
    using I = std::inplace_vector<P, 3>;
    auto nums = I{{0, 1}, {2, 3}};
 
    auto it = nums.emplace(nums.begin() + 1, -1, -2);
    assert((*it == P{-1, -2}));
    assert((nums == I{P{0, 1}, {-1, -2}, {2, 3}}));
 
    try
    {
        nums.emplace(nums.begin(), 1, 3); // throws: no space
    }
    catch(const std::bad_alloc& ex)
    {
        std::cout << ex.what() << '\n';
    }
}

Possible output:

[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