名稱空間
變體
操作

std::inplace_vector<T,N>::try_append_range

來自 cppreference.com
 
 
 
 
template< container-compatible-range<T> R >
constexpr std::ranges::borrowed_iterator_t<R> try_append_range( R&& rg );
(C++26 起)

rg 中的初始元素副本新增到 end() 之前,直到所有元素都被插入或內部儲存耗盡(即 size() == capacity()true)。

所有迭代器和引用保持有效。end() 迭代器失效。

rg 中的每個迭代器至多解引用一次。

目錄

[編輯] 引數

rg - 一個 容器兼容範圍 (container compatible range),即一個 input_range,其元素可轉換為 T
型別要求
-
T 必須能夠從 *ranges::begin(rg) 就地構造 (EmplaceConstructible)inplace_vector 中。否則,行為是未定義的。

[編輯] 返回值

指向 rg 中第一個未插入到 *this 的元素的迭代器,如果不存在這樣的元素,則返回 ranges::end(rg)

[編輯] 複雜度

與插入元素的數量成線性關係。

[編輯] 異常

插入元素的初始化可能丟擲的任何異常。

inplace_vector 提供基本異常安全保證,即呼叫前容器的所有元素都被保留,所有已插入的元素(如果在異常發生前,則也包括這些元素)也被保留。

[編輯] 注意

[編輯] 示例

#include <cassert>
#include <initializer_list>
#include <inplace_vector>
 
int main()
{
    using I = std::inplace_vector<int, 8>;
    auto nums = I{1, 2, 3};
    const auto rg = {-1, -2, -3};
 
    auto it = nums.try_append_range(rg);
    assert(nums.size() == 6);
    assert((nums == I{1, 2, 3, -1, -2, -3}));
    assert(it == rg.end());
 
    it = nums.try_append_range(rg);
    assert(nums.size() == 8);
    assert((nums == I{1, 2, 3, -1, -2, -3, -1, -2}));
    assert(it == rg.begin() + 2);
}

[編輯] 參閱

新增一個元素範圍到結尾
(公共成員函式) [編輯]
新增元素到結尾
(公共成員函式) [編輯]
嘗試在末尾新增元素
(公共成員函式) [編輯]
無條件地在末尾新增元素
(公共成員函式) [編輯]
就地構造元素於結尾
(公共成員函式) [編輯]
嘗試在末尾就地構造元素
(公共成員函式) [編輯]
無條件地在末尾就地構造元素
(公共成員函式) [編輯]
移除末元素
(公共成員函式) [編輯]
建立從引數推斷型別的std::back_insert_iterator
(函式模板) [編輯]