目次
std :: mapやstd :: unordered_mapと同様に、std :: setの最下層は赤黒木であり、std :: unordered_setの最下層はハッシュテーブルです。
1、std :: set
ヘッダーファイル:<セット>
クラス宣言:
template<
class Key,
class Compare = std::less<Key>,
class Allocator = std::allocator<Key>
> class set;
namespace pmr {
template <class Key, class Compare = std::less<Key>>
using set = std::set<Key, Compare, std::pmr::polymorphic_allocator<Key>>;
}
セットは、一意の要素を特定の順序で格納するコンテナです。キーは要素の値であり、タイプはconstです。コンテナ内で変更することはできません。追加と削除のみをサポートします。
メンバー関数
(コンストラクタ) |
建設 set (パブリックメンバー機能) |
(デストラクタ) |
破壊 set (パブリックメンバー関数) |
演算子= |
コンテナに割り当てる (パブリックメンバー関数) |
get_allocator |
関連するアロケータを返します (パブリックメンバー関数) |
イテレータ |
|
スタートスタート (C ++ 11) |
イテレータを先頭に戻します (パブリックメンバー関数) |
エンドセンド (C ++ 11) |
イテレータを最後に返します (パブリックメンバー関数) |
rbegincrbegin (C ++ 11) |
逆イテレータを先頭に戻す (パブリックメンバー関数) |
収益性の高い (C ++ 11) |
逆イテレータを最後に戻します (パブリックメンバー関数) |
容量 |
|
空の |
コンテナが空かどうかを確認します (パブリックメンバー関数) |
サイズ |
含まれている要素の数を返します (パブリックメンバー関数) |
max_size |
収容できる要素の最大数を返します (パブリックメンバー関数) |
修飾子 |
|
晴れ |
クリアコンテンツ (パブリックメンバー機能) |
インサート |
要素またはノードを挿入します(C ++ 17以降) (パブリックメンバー関数) |
配置する (C ++ 11) |
要素を適切に構築する (パブリックメンバー関数) |
emplace_hint (C ++ 11) |
ヒントを使用して要素を適切に構築します (パブリックメンバー関数) |
消去 |
要素の消去 (パブリックメンバー関数) |
スワップ |
コンテンツ交換 (パブリックメンバー機能) |
エキス (C ++ 17) |
別のコンテナからノードを解放します (パブリックメンバー関数) |
マージ (C ++ 17) |
別のコンテナからノードを結合する (パブリックメンバー関数) |
検索 |
|
カウント |
特定のキーに一致する要素の数を返します (パブリックメンバー関数) |
見つける |
特定のキーを持つ要素を検索する (パブリックメンバー関数) |
含まれています (C ++ 20) |
コンテナに特定のキーを持つ要素が含まれているかどうかを確認します (パブリックメンバー関数) |
equal_range |
特定のキーに一致する要素の範囲を返します (パブリックメンバー関数) |
lower_bound |
指定されたキー以上の最初の要素にイテレータを返します (パブリックメンバー関数) |
上界 |
指定されたキーよりも大きい最初の要素へのイテレータを返します (パブリックメンバー関数) |
観察者 |
|
key_comp |
キーの比較に使用される関数を返します (パブリックメンバー関数) |
value_comp |
value_type型のオブジェクトのキーを比較するために使用される関数を返します。 (パブリックメンバー機能) |
2、std :: unordered_set
ヘッダーファイル:<unordered_set>
クラス宣言:
template<
class Key,
class Hash = std::hash<Key>,
class KeyEqual = std::equal_to<Key>,
class Allocator = std::allocator<Key>
> class unordered_set;
namespace pmr {
template <class Key,
class Hash = std::hash<Key>,
class Pred = std::equal_to<Key>>
using unordered_set = std::unordered_set<Key, Hash, Pred,
std::pmr::polymorphic_allocator<Key>>;
}
无序集合是不按特定顺序存储唯一元素的容器,并可以根据其值快速检索单个元素。
同set一样,key就是元素的值,而且类型为const,不可在容器中修改,只支持添加和删除。
在内部,unordered_set中的元素未按任何特定顺序排序,而是根据其哈希值组织到存储桶中,以允许直接通过其值快速访问各个元素(平均平均时间复杂度恒定)。
尽管unordered_set容器通过其键访问单个元素的速度要比set容器快,但是通常通过它们的元素子集进行范围迭代的效率较低。
成员函数
(构造函数) | 构造 unordered_set (公开成员函数) |
(析构函数) |
析构 unordered_set (公开成员函数) |
operator= |
赋值给容器 (公开成员函数) |
get_allocator |
返回相关的分配器 (公开成员函数) |
迭代器 |
|
begincbegin |
返回指向起始的迭代器 (公开成员函数) |
endcend |
返回指向末尾的迭代器 (公开成员函数) |
容量 |
|
empty |
检查容器是否为空 (公开成员函数) |
size |
返回容纳的元素数 (公开成员函数) |
max_size |
返回可容纳的最大元素数 (公开成员函数) |
修改器 |
|
clear |
清除内容 (公开成员函数) |
insert |
插入元素或结点 (C++17 起) (公开成员函数) |
emplace |
原位构造元素 (公开成员函数) |
emplace_hint |
使用提示原位构造元素 (公开成员函数) |
erase |
擦除元素 (公开成员函数) |
swap |
交换内容 (公开成员函数) |
extract (C++17) |
从另一容器释出结点 (公开成员函数) |
merge (C++17) |
从另一容器接合结点 (公开成员函数) |
查找 |
|
count |
返回匹配特定键的元素数量 (公开成员函数) |
find |
寻找带有特定键的元素 (公开成员函数) |
contains (C++20) |
检查容器是否含有带特定键的元素 (公开成员函数) |
equal_range |
返回匹配特定键的元素范围 (公开成员函数) |
桶接口 |
|
begin(size_type) cbegin(size_type) |
返回一个迭代器,指向指定的桶的开始 (公开成员函数) |
end(size_type) cend(size_type) |
返回一个迭代器,指向指定的桶的末尾 (公开成员函数) |
bucket_count |
返回桶数 (公开成员函数) |
max_bucket_count | 返回桶的最大数量 (公开成员函数) |
bucket_size |
返回在特定的桶中的元素数量 (公开成员函数) |
bucket |
返回带有特定键的桶 (公开成员函数) |
哈希策略 |
|
load_factor |
返回每个桶的平均元素数量 (公开成员函数) |
max_load_factor |
管理每个桶的平均元素数量的最大值 (公开成员函数) |
rehash |
为至少为指定数量的桶预留存储空间。 这会重新生成哈希表。 (公开成员函数) |
reserve |
为至少为指定数量的元素预留存储空间。 这会重新生成哈希表。 (公开成员函数) |
观察器 |
|
hash_function |
返回用于对关键哈希的函数 (公开成员函数) |
key_eq |
返回用于比较键的相等性的函数 (公开成员函数) |