std::allocator_traits<Alloc>:: allocate_at_least
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
static
constexpr
std::
allocation_result
<
pointer, size_type
>
allocate_at_least ( Alloc & a, size_type n ) ; |
(C++23以降) | |
allocate_at_least
は
a.
allocate_at_least
(
n
)
を呼び出し、その呼び出しが適切な形式であればその結果を返します。そうでない場合、これは
return
{
a.
allocate
(
n
)
, n
}
;
と等価です。
allocator_at_least
は少なくとも
n
value_type
オブジェクト分のストレージを確保しようと試み、正確に
n
オブジェクト分のストレージを確保するフォールバック機構を提供します。
目次 |
パラメータ
| a | - | ストレージ割り当てに使用されるアロケータ |
| n | - | ストレージを割り当てるオブジェクト数の下限 |
戻り値
a. allocate_at_least ( n ) それが適切に形成されている場合。
それ以外の場合、 std:: allocation_result < pointer, size_type > { a. allocate ( n ) , n } 。
例外
選択されたアロケート関数が何をいつスローするか。
注記
allocate_at_least
メンバ関数は、
Allocator
型において主に連続コンテナ(例えば
std::vector
や
std::basic_string
)向けに提供され、実際に割り当てられたサイズに容量を合わせることで再割り当てを削減します。
allocate_at_least
はフォールバック機構を提供するため、適切な場面で直接使用できます。
型
Alloc
のアロケータオブジェクト
a
が与えられたとき、
std::
allocator_traits
<
Alloc
>
::
allocate_at_least
(
a, n
)
から返される値を
result
とすると、メモリリークを避けるため、ストレージは
a.
deallocate
(
result.
ptr
, m
)
によって(通常は
std::
allocator_traits
<
Alloc
>
::
deallocate
(
a, result.
ptr
, m
)
を通じて呼び出される)解放されるべきです。
解放時に使用される引数
m
は、
n
以上かつ
result.
count
以下でなければなりません。そうでない場合、動作は未定義です。
n
は常に
result.
count
と等しいことに注意してください。これは、アロケータが
allocate_at_least
を提供しない場合、
m
が
n
と等しくなければならないことを意味します。
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_allocate_at_least
|
202302L
|
(C++23) |
allocate_at_least
など
|
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
(C++23)
|
要求されたサイズ以上の未初期化ストレージを割り当てる
(
std::allocator<T>
の公開メンバ関数)
|