std::inplace_vector<T,N>::push_back
來自 cppreference.com
< cpp | 容器 | inplace_vector
constexpr reference push_back( const T& value ); |
(1) | (C++26 起) |
constexpr reference push_back( T&& value ); |
(2) | (C++26 起) |
將給定元素value新增到容器末尾。
1) 新元素初始化為value的副本。
2) 將value移動到新元素中。
除了 end()
(如果發生插入則會失效)之外,沒有迭代器或引用會失效。
目錄 |
[編輯部分:引數] 引數
value | - | 要新增的元素值 |
型別要求 | ||
-為了使用過載 (1),T 必須滿足CopyInsertable的要求。 | ||
-為了使用過載 (2),T 必須滿足MoveInsertable的要求。 |
[編輯部分:返回值] 返回值
back()
,即對插入元素的引用。
[編輯部分:複雜度] 複雜度
常數時間。
[編輯部分:異常] 異常
- 如果呼叫前 size() == capacity(),則丟擲 std::bad_alloc。
- 插入元素的初始化可能丟擲的任何異常。
如果因任何原因丟擲異常,這些函式沒有效果(強異常安全保證)。
[編輯部分:示例] 示例
執行此程式碼
#include <inplace_vector> #include <new> #include <print> #include <string> int main() { std::inplace_vector<std::string, 2> fauna; std::string dog{"\N{DOG}"}; fauna.push_back("\N{CAT}"); // overload (1) fauna.push_back(std::move(dog)); // overload (2) std::println("fauna = {}", fauna); try { fauna.push_back("\N{BUG}"); // throws: there is no space } catch(const std::bad_alloc& ex) { std::println("{}", ex.what()); } std::println("fauna = {}", fauna); }
可能的輸出
fauna = ["🐈", "🐕"] std::bad_alloc fauna = ["🐈", "🐕"]
[編輯部分:另請參閱] 另請參閱
就地構造元素於結尾 (公共成員函式) | |
新增一個元素範圍到結尾 (公共成員函式) | |
嘗試在末尾新增元素 (公共成員函式) | |
嘗試在末尾就地構造元素 (公共成員函式) | |
嘗試在末尾新增一系列元素 (公共成員函式) | |
無條件地在末尾新增元素 (公共成員函式) | |
無條件地在末尾就地構造元素 (公共成員函式) | |
移除末元素 (公共成員函式) | |
建立從引數推斷型別的std::back_insert_iterator (函式模板) |