GeezerVison is showing cpprefjp.github.io — std::flat_set - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月30日 11時08分16秒 (JST)
Akira Takahashi
が更新
履歴
編集
class template
<flat_set>
std:: flat_set (C++23)
namespace std {
template < class Key ,
class Compare = less < Key > ,
class KeyContainer = vector < Key >>
class flat_set ;
}
概要
std::flat_setは、重複しない要素を格納する連想コンテナの一種であり、要素自身がキーとなる、集合を表すクラスである。
std::flat_setは、ノードベースで実装されるstd::set 、ハッシュテーブルで実装されるstd::unordered_set とは異なり、ソート済み配列と二分探索の組み合わせで実装される。
ほかの連想コンテナとの比較としては、
また、このクラスは分類としてはstd::queue やstd::stack と同様のコンテナアダプタに分類され、キーの配列をラップして扱う実装となっている。
このコンテナクラスは、ランダムアクセスイテレータをサポートする。
ほかの連想コンテナとの要件の違い
このクラスは要件として、コンテナクラスと、逆順コンテナクラスであることは満たすが、連想コンテナの要件としては以下を満たさない:
node handleに関する要件
イテレータ無効化に関する要件
単一要素の挿入と削除に線形時間かかる (挿入位置のイテレータを指定したとしても)
また、このコンテナはメモリアロケータを指定できない設計にもなっている。
概念・前提知識
テンプレートパラメータ制約
KeyContainerに指定するコンテナ型は、
シーケンスコンテナの要件を満たし、
ランダムアクセスイテレータをもつこと
適格要件
KeyがKeyContainer::value_typeと同じ型であること
メンバ関数
構築・破棄
イテレータ
名前
説明
対応バージョン
begin
先頭を指すイテレータを取得する
C++23
cbegin
先頭を指す読み取り専用イテレータを取得する
C++23
end
末尾の次を指すイテレータを取得する
C++23
cend
末尾の次を指す読み取り専用イテレータを取得する
C++23
rbegin
末尾を指す逆イテレータを取得する
C++23
crbegin
末尾を指す読み取り専用逆イテレータを取得する
C++23
rend
先頭の前を指す逆イテレータを取得する
C++23
crend
先頭の前を指す読み取り専用逆イテレータを取得する
C++23
領域
名前
説明
対応バージョン
empty
コンテナが空であるかどうかを調べる
C++23
size
要素数を取得する
C++23
max_size
格納可能な最大の要素数を取得する
C++23
コンテナの変更
要素アクセス
オブザーバー
メンバ型
名前
説明
対応バージョン
key_type
キーの型。テンプレートパラメータ Key
C++23
value_type
要素の型。テンプレートパラメータ Key
C++23
key_compare
キーの大小関係を判定する二項述語の型。テンプレートパラメータ Compare
C++23
value_compare
要素の大小関係を判定する二項述語の型。テンプレートパラメータ Compare
C++23
reference
要素への参照型。value_type&
C++23
const_reference
要素へのconst参照型。const value_type&
C++23
size_type
要素数を表す符号なし整数型 size_t
C++23
difference_type
同一のコンテナを指す iterator の差を表す符号付き整数型 ptrdiff_t
C++23
iterator
ランダムアクセスイテレータ
C++23
const_iterator
読み取り専用ランダムアクセスイテレータ
C++23
reverse_iterator
逆順ランダムアクセスイテレータ。std::reverse_iterator <iterator>
C++23
const_reverse_iterator
読み取り専用逆順ランダムアクセスイテレータ。std::reverse_iterator <const_iterator>
C++23
container_type
キーを格納するコンテナ型 KeyContainer
C++23
非メンバ関数
要素削除
名前
説明
対応バージョン
erase_if
指定した条件に合致する要素とその分の領域を、コンテナから削除する
C++23
非メンバ(Hidden friends )関数
比較演算子
名前
説明
対応バージョン
operator==
左辺と右辺が等しいかの判定を行う
C++23
bool operator!=(const flat_set& x, const flat_set& y);
左辺と右辺が等しくないかの判定を行う (==により使用可能)
C++23
operator<=>
三方比較を行う
C++23
bool operator<(const flat_set& x, const flat_set& y);
左辺が右辺より小さいかの判定を行う (<=>により使用可能)
C++23
bool operator<=(const flat_set& x, const flat_set& y);
左辺が右辺より小さいか等しいかの判定を行う (<=>により使用可能)
C++23
bool operator>(const flat_set& x, const flat_set& y);
左辺が右辺より大きいかの判定を行う (<=>により使用可能)
C++23
bool operator>=(const flat_set& x, const flat_set& y);
左辺が右辺より大きいか等しいかの判定を行う (<=>により使用可能)
C++23
入れ替え
名前
説明
対応バージョン
swap
2つのflat_setオブジェクトを入れ替える
C++23
推論補助
その他
例
基本的な使い方
出力
Alice
Alice
Bob
Carol
キー以外のテンプレートを指定
出力
8 7 5 4 2 1
バージョン
言語
処理系
参照