std::inplace_vector<T,N>::unchecked_push_back
來自 cppreference.com
< cpp | 容器 | inplace_vector
constexpr reference unchecked_push_back( const T& value ); |
(1) | (C++26 起) |
constexpr reference unchecked_push_back( T&& value ); |
(2) | (C++26 起) |
將給定元素value新增到容器末尾。
等同於: return *try_push_back(std::forward<decltype(value)>(value));
1) 新元素初始化為value的副本。
2) 將value移動到新元素中。
在呼叫這些函式之前,size() < capacity() 必須為 true。否則,行為是未定義的。
除了 end()
(如果發生插入則會失效)之外,沒有迭代器或引用會失效。
目錄 |
[編輯] 引數
value | - | 要新增的元素值 |
型別要求 | ||
-為了使用過載 (1),T 必須滿足CopyInsertable的要求。 | ||
-為了使用過載 (2),T 必須滿足MoveInsertable的要求。 |
[編輯] 返回值
back()
,即對插入元素的引用。
[編輯] 複雜度
常數時間。
[編輯] 異常
插入元素的初始化可能丟擲的任何異常。
如果因任何原因丟擲異常,這些函式沒有效果(強異常安全保證)。
[編輯] 注意
本節不完整 原因:解釋此 API 的目的。 |
[編輯] 示例
執行此程式碼
#include <cassert> #include <inplace_vector> #include <string> int main() { std::inplace_vector<std::string, 2> fauna; std::string dog{"dog"}; auto& r1 = fauna.unchecked_push_back("cat"); // overload (1) assert(r1 == "cat" and fauna.size() == 1); auto& r2 = fauna.unchecked_push_back(std::move(dog)); // overload (2) assert(r2 == "dog" and fauna.size() == 2); assert(fauna[0] == "cat" and fauna[1] == "dog"); // fauna.unchecked_push_back("bug"); // undefined behavior: there is no space }
[編輯] 參閱
新增元素到結尾 (public member function) | |
就地構造元素於結尾 (public member function) | |
新增一個元素範圍到結尾 (public member function) | |
嘗試在末尾新增元素 (public member function) | |
嘗試在末尾就地構造元素 (public member function) | |
嘗試在末尾新增一系列元素 (public member function) | |
無條件地在末尾就地構造元素 (public member function) | |
移除末元素 (public member function) | |
建立從引數推斷型別的std::back_insert_iterator (function template) |