std::hive
来自 zh.cppreference.net
| 定义于头文件 <hive>
|
||
template<
class T,
class Allocator = std::allocator<T>
> class hive;
|
(1) | (since C++26) |
namespace pmr {
template<class T>
using hive = std::hive<T, std::pmr::polymorphic_allocator<T>>;
}
|
(2) | (since C++26) |
1)
std::hive 是一个顺序容器,提供常数时间的插入和删除操作。hive 自动在多个内存块中管理其存储(元素块)。插入位置未指定,因此容器可以重用已删除元素的内存位置。
当 活动块(包含元素的元素块)变空时,它们可以被释放或成为 保留块。
保留块在被重用以存储元素时会成为活动块。用户可以通过调用reserve()。
删除和迭代都具有常数时间复杂度。
每个活动块的容量按实现定义的因子增长(例如,按 1.69)。用户和实现都可以限制元素块的最小和最大元素容量。
一个 std::hive 满足 Container 的需求,但运算符 == 和 != 除外。一个 std::hive 同样满足 ReversibleContainer、AllocatorAwareContainer 以及部分满足 SequenceContainer。
| 本节不完整 原因:迭代器描述 |
模板参数
| T | - | 元素的类型。
| ||
| Allocator | - | 用于获取/释放内存并在该内存中构造/销毁元素的分配器。该类型必须满足 Allocator。如果 Allocator::value_type 与 T 不相同,则程序非良构。
|
成员类型
| 成员类型 | 定义 |
value_type
|
T
|
allocator_type
|
Allocator
|
pointer
|
std::allocator_traits<Allocator>::pointer
|
const_pointer
|
std::allocator_traits<Allocator>::const_pointer
|
reference
|
value_type&
|
const_reference
|
const value_type&
|
size_type
|
实现定义 |
difference_type
|
实现定义 |
iterator
|
实现定义 LegacyBidirectionalIterator 到 value_type
|
const_iterator
|
实现定义 LegacyBidirectionalIterator 到 const value_type
|
reverse_iterator
|
std::reverse_iterator<iterator>
|
const_reverse_iterator
|
std::reverse_iterator<const_iterator>
|
数据成员
| 成员 | 描述 |
hive_limits current-limits (私有)
|
当前块容量限制 (仅用于阐述的成员对象*) |
成员函数
构造 hive (公有成员函数) | |
销毁 hive (公有成员函数) | |
| 将值赋值给容器 (公有成员函数) | |
| 将值赋值给容器 (公有成员函数) | |
| 将一个值范围赋值给容器 (公有成员函数) | |
| 返回关联的分配器 (公有成员函数) | |
迭代器 | |
| 返回指向起始的迭代器 (公有成员函数) | |
| 返回指向末尾的迭代器 (公有成员函数) | |
| 返回指向起始的反向迭代器 (公有成员函数) | |
| 返回指向末尾的反向迭代器 (公有成员函数) | |
容量 | |
| 检查容器是否为空 (公有成员函数) | |
| 返回元素数 (公有成员函数) | |
| 返回最大可能的元素数 (公有成员函数) | |
| 返回当前已分配存储能容纳的元素数 (公有成员函数) | |
| 预留存储 (公有成员函数) | |
| 通过释放未使用的内存来减少内存用量 (公有成员函数) | |
| 释放保留块并相应减少容量 (公有成员函数) | |
| 返回当前块容量限制 (公有成员函数) | |
| 返回块容量默认限制 (公有成员函数) | |
| 返回块容量硬限制 (公有成员函数) | |
| 检查给定的容量限制是否满足 (公有成员函数) | |
| 重新分配活动块使其在块限制内 (公有成员函数) |
修改器 | |
| 原位构造元素 (公有成员函数) | |
| 使用提示原位构造元素 (公有成员函数) | |
| 插入元素 (公有成员函数) | |
| 插入一个范围的元素 (公有成员函数) | |
| 删除元素 (公有成员函数) | |
| 交换内容 (公有成员函数) | |
| 清空内容 (公有成员函数) | |
操作 | |
从另一个中移动元素 hive (公有成员函数) | |
| 移除连续的重复元素 (公有成员函数) | |
| 对元素进行排序 (公有成员函数) | |
| 返回指向与给定指针相同元素的迭代器 (公有成员函数) | |
非成员函数
(C++26) |
特化 std::swap 算法 (函数模板) |
| 删除所有满足特定条件的元素 (函数模板) |
推导指引 |
(since C++26) |
辅助类
(C++26) |
关于块容量限制的布局信息 std::hive (类) |
备注
| 功能测试 宏 | 值 | 标准 | 功能 |
|---|---|---|---|
__cpp_lib_hive |
202502L |
(C++26) | std::hive
|
示例
| 本节不完整 原因:没有示例 |
参见
| 双向链表 (类模板) | |
(C++11) |
单向链表 (类模板) |
外部链接
| 1. | plf::hive — GitHub 上的参考实现
|
| 2. | Bee hive 在 Wikipedia.com 上 |