名稱空間
變體
操作

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

來自 cppreference.com
 
 
 
 
模板< 容器兼容範圍<T> R >
constexpr void append_range( R&& rg );
(C++26 起)

將範圍 rg 中的元素副本以非逆序插入到 end() 之前。


rg 中的每個迭代器都只解引用一次。

目錄

[編輯] 引數

rg - 一個 容器兼容範圍,即一個 輸入範圍,其元素可轉換為 T
型別要求
-
T 必須是 可就地構造 (EmplaceConstructible)inplace_vector 中,透過 *ranges::begin(rg)。否則,行為未定義。

[編輯] 返回值

(無)

[編輯] 複雜度

操作時間與 rg 的大小呈線性關係。對 T 的建構函式呼叫次數恰好等於 std::ranges::size(rg))

[編輯] 異常

如果 std::ranges::size(rg) > N,則丟擲 std::bad_alloc。如果除了 T 的複製建構函式、移動建構函式、賦值運算子或移動賦值運算子,或任何 InputIterator 操作之外丟擲異常,則沒有效果。否則,如果丟擲異常,則 size() >= n,並且範圍 [0n) 中的元素未被修改,其中 n 是此呼叫之前 size() 的值。

[編輯] 示例

#include <cassert>
#include <inplace_vector>
#include <iostream>
 
int main()
{
    using I = std::inplace_vector<int, 8>;
    auto head = I{1, 2, 3, 4};
    const auto tail = {-5, -6, -7};
    head.append_range(tail);
    assert(head.size() == 7 and (head == I{1, 2, 3, 4, -5, -6, -7}));
    try
    {
        head.append_range(tail); // throws: no space
    }
    catch(const std::bad_alloc&)
    {
        std::cout << "std::bad_alloc\n";
    }
}

輸出

std::bad_alloc

[編輯] 另請參閱

嘗試在末尾新增一系列元素
(公開成員函式)
插入元素範圍
(公開成員函式)
新增元素到結尾
(公開成員函式)
就地構造元素於結尾
(公開成員函式)