Skip to content

Commit f529f5d

Browse files
committed
flat_set / flat_multiset : 概要文章を追加 #1448
1 parent fb9b7a8 commit f529f5d

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

reference/flat_set/flat_multiset.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,32 @@ namespace std {
1616
* vector[link /reference/vector/vector.md]
1717
1818
## 概要
19+
`std::flat_multiset`は、重複する要素を許可する連想コンテナの一種であり、要素自身がキーとなる、集合を表すクラスである。
20+
21+
`std::flat_multiset`は、ノードベースで実装される[`std::multiset`](/reference/set/multiset.md)、ハッシュテーブルで実装される[`std::unordered_multiset`](/reference/unordered_set/unordered_multiset.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。これはほかの実装と比較して、メモリ使用量と列挙速度において優位であり、一方で挿入速度と検索速度はほかの実装に劣る。
22+
23+
また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::skack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列をラップして扱う実装となっている。
24+
25+
このコンテナクラスは、ランダムアクセスイテレータをサポートする。
26+
27+
28+
### ほかの連想コンテナとの要件の違い
29+
このクラスは要件として、コンテナクラスと、逆順コンテナクラスであることは満たすが、連想コンテナの要件としては以下を満たさない:
30+
31+
- node handleに関する要件
32+
- イテレータ無効化に関する要件
33+
- 単一要素の挿入と削除に線形時間かかる (挿入位置のイテレータを指定したとしても)
34+
35+
また、このコンテナはメモリアロケータを指定できない設計にもなっている。
36+
37+
## テンプレートパラメータ制約
38+
- `KeyContainer`に指定するコンテナ型は、
39+
- シーケンスコンテナの要件を満たし、
40+
- ランダムアクセスイテレータをもつこと
41+
42+
43+
## 適格要件
44+
- `Key`が`KeyContainer::value_type`と同じ型であること
1945
2046
2147
## メンバ関数

reference/flat_set/flat_set.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,32 @@ namespace std {
1616
* vector[link /reference/vector/vector.md]
1717
1818
## 概要
19+
`std::flat_set`は、重複しない要素を格納する連想コンテナの一種であり、要素自身がキーとなる、集合を表すクラスである。
20+
21+
`std::flat_set`は、ノードベースで実装される[`std::set`](/reference/set/set.md)、ハッシュテーブルで実装される[`std::unordered_set`](/reference/unordered_set/unordered_set.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。これはほかの実装と比較して、メモリ使用量と列挙速度において優位であり、一方で挿入速度と検索速度はほかの実装に劣る。
22+
23+
また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::skack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列をラップして扱う実装となっている。
24+
25+
このコンテナクラスは、ランダムアクセスイテレータをサポートする。
26+
27+
28+
### ほかの連想コンテナとの要件の違い
29+
このクラスは要件として、コンテナクラスと、逆順コンテナクラスであることは満たすが、連想コンテナの要件としては以下を満たさない:
30+
31+
- node handleに関する要件
32+
- イテレータ無効化に関する要件
33+
- 単一要素の挿入と削除に線形時間かかる (挿入位置のイテレータを指定したとしても)
34+
35+
また、このコンテナはメモリアロケータを指定できない設計にもなっている。
36+
37+
## テンプレートパラメータ制約
38+
- `KeyContainer`に指定するコンテナ型は、
39+
- シーケンスコンテナの要件を満たし、
40+
- ランダムアクセスイテレータをもつこと
41+
42+
43+
## 適格要件
44+
- `Key`が`KeyContainer::value_type`と同じ型であること
1945
2046
2147
## メンバ関数

0 commit comments

Comments
 (0)