名稱空間
變體
操作

std::allocator_traits<Alloc>::construct

來自 cppreference.com
 
 
記憶體管理庫
(僅作說明*)
未初始化記憶體演算法
(C++17)
(C++17)
(C++17)
(C++20)
受約束的未初始化
記憶體演算法
(C++20)
C 庫
(C++17)


分配器
(C++11)
(C++11)
(C++11)
記憶體資源
垃圾回收支援
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
未初始化儲存
(直到 C++20*)
(直到 C++20*)
顯式生命週期管理
智慧指標
(C++11)
(C++11)
(C++11)
(直到 C++17*)
(C++11)
(C++17)
(C++26)
(C++26)
(C++11)
(C++11)
(C++23)
(C++23)
低階記憶體
管理
(C++11)
(C++17)
(C++17)
雜項
(C++11)
(C++20)
(C++11)
(C++11)
(C++20)
 
 
定義於標頭檔案 <memory>
template< class T, class... Args >
static void construct( Alloc& a, T* p, Args&&... args );
(C++11 起)
(C++20 起為 constexpr)

若可能,則透過呼叫 a.construct(p, std::forward<Args>(args)...),在 p 所指向的已分配的未初始化儲存中構造 T 型別的物件。

若上述操作不可能(例如 Alloc 沒有成員函式 construct()),則呼叫

::new (static_cast<void*>(p)) T(std::forward<Args>(args)...)

(C++20 前)

std::construct_at(p, std::forward<Args>(args)...)

(C++20 起)

目錄

[編輯] 引數

a - 用於構造的分配器
p - 指向將被構造 T 物件的未初始化儲存的指標
args... - 要傳遞給 a.construct()放置 new(C++20 前)std::construct_at()(C++20 起) 的建構函式引數

[編輯] 返回值

(無)

[編輯] 注意

標準庫容器在插入、複製或移動元素時使用此函式。

因為此函式提供了對放置 new 的自動回退,所以自 C++11 起,成員函式 construct() 是一個可選的分配器 (Allocator) 要求。

[編輯] 參閱

分配函式
(函式) [編輯]
(C++20 前)
在已分配的儲存中構造物件
std::allocator<T> 的公開成員函式) [編輯]
(C++20)
在給定地址建立物件
(函式模板) [編輯]