std::hive - cppreference.com
来自cppreference.com
| 在标头 |
||
template< class T, class Allocator = std::allocator<T> > class hive; |
(1) | (C++26 起) |
namespace pmr { template<class T> using hive = std::hive<T, std::pmr::polymorphic_allocator<T>>; } |
(2) | (C++26 起) |
1) std::hive 是一个序列容器,提供常数时间的插入和擦除操作。
2) std::pmr::hive 是一个使用多态分配器的别名模板。
蜂巢会在多个内存块(称为元素块)中自动管理存储。插入位置是未指明的,因而容器可以重用已擦除元素的内存位置。
当活动块(包含元素的元素块)变空时,它们会要么被解分配,要么成为预留块。
预留块在被用于存储元素时成为活动块。用户可以通过调用 reserve() 来创建额外的预留块。
擦除和迭代都具有常数时间复杂度。
各活动块的容量按照由实现定义的增长因子(例如 1.69)增长。用户和实现都可以对元素块的最小和最大元素容量设置限制。
std::hive 满足容器 (Container) 的要求,但运算符 {{tt|1===} 和 != 除外。std::hive 也满足可逆容器 (ReversibleContainer) 、知分配器容器 (AllocatorAwareContainer) 以及序列容器 (SequenceContainer) 的部分要求。
模板形参
| T | - | 元素的类型。
| ||
| Allocator | - | 用于获取/释放内存及构造/析构内存中元素的分配器。类型必须满足分配器 (Allocator) 。如果 Allocator::value_type 与 T 不同,那么行为未定义(C++20 前)程序非良构(C++20 起)。[编辑]
|
成员类型
| 成员类型 | 定义 |
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
|
由实现定义的指向 value_type 的老式双向迭代器 (LegacyBidirectionalIterator) [编辑]
|
const_iterator
|
由实现定义的指向 const value_type 的老式双向迭代器 (LegacyBidirectionalIterator) [编辑]
|
reverse_iterator
|
std::reverse_iterator<iterator>[编辑]
|
const_reverse_iterator
|
std::reverse_iterator<const_iterator>[编辑]
|
数据成员
| 成员 | 描述 |
hive_limits current-limits (私有)
|
当前的块容量限制 (仅用于阐述的成员对象*) |
成员函数
构造 hive (公开成员函数) [编辑] | |
析构 hive (公开成员函数) [编辑] | |
| 将值赋给容器 (公开成员函数) [编辑] | |
| 将值赋给容器 (公开成员函数) [编辑] | |
| 将范围的值赋给容器 (公开成员函数) [编辑] | |
| 返回关联的分配器 (公开成员函数) [编辑] | |
迭代器 | |
| 返回指向起始的迭代器 (公开成员函数) [编辑] | |
| 返回指向末尾的迭代器 (公开成员函数) [编辑] | |
| 返回指向起始的逆向迭代器 (公开成员函数) [编辑] | |
| 返回指向末尾的逆向迭代器 (公开成员函数) [编辑] | |
容量 | |
| 检查容器是否为空 (公开成员函数) [编辑] | |
| 返回元素数 (公开成员函数) [编辑] | |
| 返回可容纳的最大元素数 (公开成员函数) [编辑] | |
| 返回当前存储空间能够容纳的元素数 (公开成员函数) [编辑] | |
| 预留存储空间 (公开成员函数) [编辑] | |
| 通过释放未使用的内存减少内存的使用 (公开成员函数) [编辑] | |
| 释放预留的内存块并相应地减少容量 (公开成员函数) [编辑] | |
| 返回当前的块容量限制 (公开成员函数) [编辑] | |
| 返回块容量的默认限制 (公开成员函数) [编辑] | |
| 返回块容量硬限制 (公开成员函数) [编辑] | |
| 检查给定的容量限制是否不超出硬限制 (公开成员函数) [编辑] | |
| 重新分配活动块,使它们处于块容量限制范围之内 (公开成员函数) [编辑] |
修改器 | |
| 原位构造元素 (公开成员函数) [编辑] | |
| 使用提示原位构造元素 (公开成员函数) [编辑] | |
| 插入元素 (公开成员函数) [编辑] | |
| 插入元素范围 (公开成员函数) [编辑] | |
| 擦除元素 (公开成员函数) [编辑] | |
| 交换内容 (公开成员函数) [编辑] | |
| 清除内容 (公开成员函数) [编辑] | |
操作 | |
从另一个 hive 中移动元素 (公开成员函数) [编辑] | |
| 删除连续的重复元素 (公开成员函数) [编辑] | |
| 对元素进行排序 (公开成员函数) [编辑] | |
| 返回一个迭代器,该迭代器与给定的指针指向相同元素 (公开成员函数) [编辑] | |
非成员函数
辅助类
注解
| 功能特性测试宏 | 值 | 标准 | 功能特性 |
|---|---|---|---|
__cpp_lib_hive |
202502L |
(C++26) | std::hive
|