std::allocator_traits<Alloc>::allocate
來自 cppreference.com
定義於標頭檔案 <memory> |
||
static pointer allocate( Alloc& a, size_type n ); |
(1) | (C++11 起) (C++20 起為 constexpr) |
static pointer allocate( Alloc& a, size_type n, const_void_pointer hint ); |
(2) | (C++11 起) (C++20 起為 constexpr) |
使用分配器 a 來分配 n * sizeof(Alloc::value_type) 位元組的未初始化儲存。在儲存中建立 Alloc::value_type[n] 型別的陣列,但其元素均未被構造。
1) 呼叫 a.allocate(n)。
2) 額外傳遞記憶體局域性提示 hint。若可能則呼叫 a.allocate(n, hint)。若不可能(例如 a 沒有帶二個引數的成員函式
allocate
),則呼叫 a.allocate(n)。目錄 |
[編輯] 引數
a | - | 要使用的分配器 |
n | - | 要分配儲存的物件數量 |
hint | - | 指向附近記憶體位置的指標 |
[編輯] 返回值
呼叫 a.allocate(n) 所返回的指標。
[編輯] 注意
在 P0593R6 之前,Alloc::allocate
不被要求建立陣列物件,這導致根據對核心語言規範的嚴格解讀,為 std::vector 和一些其他容器使用非預設分配器是未定義行為。
在呼叫 allocate
之後、構造元素之前,Alloc::value_type* 的指標算術在已分配的陣列內是良定義的,但如果訪問元素,其行為是未定義的。
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 參閱
分配未初始化的儲存 ( std::allocator<T> 的公開成員函式) |