std::inplace_vector<T,N>::append_range
來自 cppreference.com
< cpp | 容器 | inplace_vector
模板< 容器兼容範圍<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,並且範圍 [
0,
n)
中的元素未被修改,其中 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
[編輯] 另請參閱
嘗試在末尾新增一系列元素 (公開成員函式) | |
插入元素範圍 (公開成員函式) | |
新增元素到結尾 (公開成員函式) | |
就地構造元素於結尾 (公開成員函式) |