std::inplace_vector<T,N>::assign_range
來自 cppreference.com
< cpp | 容器 | inplace_vector
template< container-compatible-range<T> R > constexpr void assign_range( R&& rg ); |
(C++26 起) | |
用 rg 中每個元素的副本替換容器中的元素。
本節不完整 |
範圍 rg 中的每個迭代器被解引用一次。
如果 rg 與容器重疊,則行為未定義。
目錄 |
[編輯] 引數
rg 中的內容替換容器內容。 |
- | 一個 input_range ,其引用型別可轉換為容器的元素型別 |
型別要求 | ||
-必須對 std::assignable_from<T&, ranges::range_reference_t<R>> 建模。否則,程式非良構。 | ||
-T 必須能從 *ranges::begin(rg) 在容器中就地構造(EmplaceConstructible)。否則,行為未定義。 |
[編輯] 返回值
(無)
異常
- 若 std::ranges::distance(rg) > capacity(),則為 bad_alloc。
- 插入元素的初始化可能丟擲的任何異常。
[編輯] 示例
執行此程式碼
#include <algorithm> #include <cassert> #include <initializer_list> #include <inplace_vector> #include <iostream> #include <new> int main() { const auto source = {1, 2, 3}; std::inplace_vector<int, 4> destination{4, 5}; destination.assign_range(source); assert(std::ranges::equal(destination, source)); try { const auto bad = {-1, -2, -3, -4, -5}; destination.assign_range(bad); // throws: bad.size() > destination.capacity() } catch(const std::bad_alloc& ex) { std::cout << ex.what() << '\n'; } }
可能的輸出
std::bad_alloc
[編輯] 參閱
插入元素範圍 (公開成員函式) | |
新增一個元素範圍到結尾 (公開成員函式) | |
將值賦給容器 (公開成員函式) | |
將值賦給容器 (公開成員函式) |