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 } 。
异常
抛出什么以及何时选择的分配函数会抛出异常。
注释
Allocator
类型的
allocate_at_least
成员函数主要为连续容器设计,例如
std::vector
和
std::basic_string
,通过使其容量在可能时匹配实际分配大小来减少重新分配。由于
allocate_at_least
提供了回退机制,可在适当场景中直接使用。
给定类型为
Alloc
的分配器对象
a
,令
result
表示从
std::
allocator_traits
<
Alloc
>
::
allocate_at_least
(
a, n
)
返回的值,该存储空间应当通过
a.
deallocate
(
result.
ptr
, m
)
(通常通过
std::
allocator_traits
<
Alloc
>
::
deallocate
(
a, result.
ptr
, m
)
调用)进行释放,以避免内存泄漏。
用于释放的实参
m
必须不小于
n
且不大于
result.
count
,否则行为未定义。请注意,若分配器未提供
allocate_at_least
,则
n
始终等于
result.
count
,这意味着
m
必须等于
n
。
| 功能测试 宏 | 值 | 标准 | 功能 |
|---|---|---|---|
__cpp_lib_allocate_at_least
|
202302L
|
(C++23) |
allocate_at_least
等
|
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
(C++23)
|
分配至少不小于请求大小的未初始化存储
(
std::allocator<T>
的公开成员函数)
|