Skip to content

Commit 751dd51

Browse files
flat_map : 速度比較として検索がmapより遅いと書かれていたのを修正 (#1533) #1531
1 parent d528d34 commit 751dd51

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

reference/flat_map/flat_map.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,13 @@ namespace std {
2020
## 概要
2121
`std::flat_map`は、重複しない要素を格納する連想コンテナの一種であり、キーとそれに対応する値を格納する。
2222
23-
`std::flat_map`は、ノードベースで実装される[`std::map`](/reference/map/map.md)、ハッシュテーブルで実装される[`std::unordered_map`](/reference/unordered_map/unordered_map.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。これはほかの実装と比較して、メモリ使用量と列挙速度において優位であり、一方で挿入速度と検索速度はほかの実装に劣る。
23+
`std::flat_map`は、ノードベースで実装される[`std::map`](/reference/map/map.md)、ハッシュテーブルで実装される[`std::unordered_map`](/reference/unordered_map/unordered_map.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。
24+
25+
ほかの連想コンテナとの比較としては、
26+
27+
- メモリ使用量と列挙速度において優位
28+
- 挿入速度と削除速度はほかの実装に劣る
29+
- 検索速度は、[`std::map`](/reference/map/map.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、サイズが大きいときは[`std::unordered_map`](/reference/unordered_map/unordered_map.md)に劣る
2430
2531
また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列と値の配列の2つを内部で持ち、それを[`std::ranges::zip_view`](/reference/ranges/zip_view.md)で綴じあわせて扱う実装となっている。
2632

reference/flat_map/flat_multimap.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,13 @@ namespace std {
2020
## 概要
2121
`flat_multimap` は同一キーの要素を複数格納できる連想コンテナの一種であり、キーとそれに対応する値を格納する。
2222
23-
`std::flat_multimap`は、ノードベースで実装される[`std::multimap`](/reference/map/multimap.md)、ハッシュテーブルで実装される[`std::unordered_multimap`](/reference/unordered_map/unordered_multimap.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。これはほかの実装と比較して、メモリ使用量と列挙速度において優位であり、一方で挿入速度と検索速度はほかの実装に劣る。
23+
`std::flat_multimap`は、ノードベースで実装される[`std::multimap`](/reference/map/multimap.md)、ハッシュテーブルで実装される[`std::unordered_multimap`](/reference/unordered_map/unordered_multimap.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。
24+
25+
ほかの連想コンテナとの比較としては、
26+
27+
- メモリ使用量と列挙速度において優位
28+
- 挿入速度と削除速度はほかの実装に劣る
29+
- 検索速度は、[`std::multimap`](/reference/map/multimap.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、サイズが大きいときは[`std::unordered_multimap`](/reference/unordered_map/unordered_multimap.md)に劣る
2430
2531
また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列と値の配列の2つを内部で持ち、それを[`std::ranges::zip_view`](/reference/ranges/zip_view.md)で綴じあわせて扱う実装となっている。
2632

reference/flat_set/flat_multiset.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,13 @@ namespace std {
1818
## 概要
1919
`std::flat_multiset`は、重複する要素を許可する連想コンテナの一種であり、要素自身がキーとなる、集合を表すクラスである。
2020
21-
`std::flat_multiset`は、ノードベースで実装される[`std::multiset`](/reference/set/multiset.md)、ハッシュテーブルで実装される[`std::unordered_multiset`](/reference/unordered_set/unordered_multiset.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。これはほかの実装と比較して、メモリ使用量と列挙速度において優位であり、一方で挿入速度と検索速度はほかの実装に劣る。
21+
`std::flat_multiset`は、ノードベースで実装される[`std::multiset`](/reference/set/multiset.md)、ハッシュテーブルで実装される[`std::unordered_multiset`](/reference/unordered_set/unordered_multiset.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。
22+
23+
ほかの連想コンテナとの比較としては、
24+
25+
- メモリ使用量と列挙速度において優位
26+
- 挿入速度と削除速度はほかの実装に劣る
27+
- 検索速度は、[`std::multiset`](/reference/set/multiset.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、サイズが大きいときは[`std::unordered_multiset`](/reference/unordered_set/unordered_multiset.md)に劣る
2228
2329
また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列をラップして扱う実装となっている。
2430

reference/flat_set/flat_set.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,13 @@ namespace std {
1818
## 概要
1919
`std::flat_set`は、重複しない要素を格納する連想コンテナの一種であり、要素自身がキーとなる、集合を表すクラスである。
2020
21-
`std::flat_set`は、ノードベースで実装される[`std::set`](/reference/set/set.md)、ハッシュテーブルで実装される[`std::unordered_set`](/reference/unordered_set/unordered_set.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。これはほかの実装と比較して、メモリ使用量と列挙速度において優位であり、一方で挿入速度と検索速度はほかの実装に劣る。
21+
`std::flat_set`は、ノードベースで実装される[`std::set`](/reference/set/set.md)、ハッシュテーブルで実装される[`std::unordered_set`](/reference/unordered_set/unordered_set.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。
22+
23+
ほかの連想コンテナとの比較としては、
24+
25+
- メモリ使用量と列挙速度において優位
26+
- 挿入速度と削除速度はほかの実装に劣る
27+
- 検索速度は、[`std::set`](/reference/set/set.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、サイズが大きいときは[`std::unordered_set`](/reference/unordered_set/unordered_set.md)に劣る
2228
2329
また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列をラップして扱う実装となっている。
2430

0 commit comments

Comments
 (0)