Namespaces
Variants

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 是一个顺序容器,提供常数时间的插入和删除操作。
2) std::pmr::hive 是一个别名模板,使用 多态分配器。

hive 自动在多个内存块中管理其存储(元素块)。插入位置未指定,因此容器可以重用已删除元素的内存位置。

当 活动块(包含元素的元素块)变空时,它们可以被释放或成为 保留块。

保留块在被重用以存储元素时会成为活动块。用户可以通过调用reserve()。

删除和迭代都具有常数时间复杂度。

每个活动块的容量按实现定义的因子增长(例如,按 1.69)。用户和实现都可以限制元素块的最小和最大元素容量。

一个 std::hive 满足 Container 的需求,但运算符 == 和 != 除外。一个 std::hive 同样满足 ReversibleContainer、AllocatorAwareContainer 以及部分满足 SequenceContainer。

模板参数

T - 元素的类型。
施加在元素上的要求取决于对容器执行的实际操作。通常,要求元素类型是完整类型并满足 Erasable,但许多成员函数施加更严格的要求。

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
(公有成员函数)
移除连续的重复元素
(公有成员函数)
对元素进行排序
(公有成员函数)
返回指向与给定指针相同元素的迭代器
(公有成员函数)

非成员函数

特化 std::swap 算法
(函数模板)
删除所有满足特定条件的元素
(函数模板)

推导指引

(since C++26)

辅助类

关于块容量限制的布局信息 std::hive
(类)

备注

功能测试 宏 值 标准 功能
__cpp_lib_hive 202502L (C++26) std::hive

示例

参见

双向链表
(类模板)
单向链表
(类模板)

外部链接

1.   plf::hive — GitHub 上的参考实现
2.   Bee hive 在 Wikipedia.com 上