From 672506cc4e3b5e4ab07aca31d4ce8293a2363b6e Mon Sep 17 00:00:00 2001 From: Akira Takahashi Date: Fri, 3 Oct 2025 13:21:17 +0900 Subject: [PATCH 1/2] =?UTF-8?q?flat=5Fmap=20:=20=E9=80=9F=E5=BA=A6?= =?UTF-8?q?=E6=AF=94=E8=BC=83=E3=81=A8=E3=81=97=E3=81=A6=E6=A4=9C=E7=B4=A2?= =?UTF-8?q?=E3=81=8Cmap=E3=82=88=E3=82=8A=E9=81=85=E3=81=84=E3=81=A8?= =?UTF-8?q?=E6=9B=B8=E3=81=8B=E3=82=8C=E3=81=A6=E3=81=84=E3=81=9F=E3=81=AE?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3=20#1531?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reference/flat_map/flat_map.md | 8 +++++++- reference/flat_map/flat_multimap.md | 8 +++++++- reference/flat_set/flat_multiset.md | 8 +++++++- reference/flat_set/flat_set.md | 8 +++++++- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/reference/flat_map/flat_map.md b/reference/flat_map/flat_map.md index 287f7b9bbc..767f0fa324 100644 --- a/reference/flat_map/flat_map.md +++ b/reference/flat_map/flat_map.md @@ -20,7 +20,13 @@ namespace std { ## 概要 `std::flat_map`は、重複しない要素を格納する連想コンテナの一種であり、キーとそれに対応する値を格納する。 -`std::flat_map`は、ノードベースで実装される[`std::map`](/reference/map/map.md)、ハッシュテーブルで実装される[`std::unordered_map`](/reference/unordered_map/unordered_map.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。これはほかの実装と比較して、メモリ使用量と列挙速度において優位であり、一方で挿入速度と検索速度はほかの実装に劣る。 +`std::flat_map`は、ノードベースで実装される[`std::map`](/reference/map/map.md)、ハッシュテーブルで実装される[`std::unordered_map`](/reference/unordered_map/unordered_map.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。 + +ほかの連想コンテナとの比較としては、 + +- メモリ使用量と列挙速度において優位 +- 挿入速度と削除速度はほかの実装に劣る +- 検索速度は、[`std::map`](/reference/map/map.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、[`std::unordered_map`](/reference/unordered_map/unordered_map.md)よりは劣る また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列と値の配列の2つを内部で持ち、それを[`std::ranges::zip_view`](/reference/ranges/zip_view.md)で綴じあわせて扱う実装となっている。 diff --git a/reference/flat_map/flat_multimap.md b/reference/flat_map/flat_multimap.md index d3f017722c..6f43109525 100644 --- a/reference/flat_map/flat_multimap.md +++ b/reference/flat_map/flat_multimap.md @@ -20,7 +20,13 @@ namespace std { ## 概要 `flat_multimap` は同一キーの要素を複数格納できる連想コンテナの一種であり、キーとそれに対応する値を格納する。 -`std::flat_multimap`は、ノードベースで実装される[`std::multimap`](/reference/map/multimap.md)、ハッシュテーブルで実装される[`std::unordered_multimap`](/reference/unordered_map/unordered_multimap.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。これはほかの実装と比較して、メモリ使用量と列挙速度において優位であり、一方で挿入速度と検索速度はほかの実装に劣る。 +`std::flat_multimap`は、ノードベースで実装される[`std::multimap`](/reference/map/multimap.md)、ハッシュテーブルで実装される[`std::unordered_multimap`](/reference/unordered_map/unordered_multimap.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。 + +ほかの連想コンテナとの比較としては、 + +- メモリ使用量と列挙速度において優位 +- 挿入速度と削除速度はほかの実装に劣る +- 検索速度は、[`std::multimap`](/reference/map/multimap.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、[`std::unordered_multimap`](/reference/unordered_map/unordered_multimap.md)よりは劣る また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列と値の配列の2つを内部で持ち、それを[`std::ranges::zip_view`](/reference/ranges/zip_view.md)で綴じあわせて扱う実装となっている。 diff --git a/reference/flat_set/flat_multiset.md b/reference/flat_set/flat_multiset.md index 7772514bb6..ca7e9f6f69 100644 --- a/reference/flat_set/flat_multiset.md +++ b/reference/flat_set/flat_multiset.md @@ -18,7 +18,13 @@ namespace std { ## 概要 `std::flat_multiset`は、重複する要素を許可する連想コンテナの一種であり、要素自身がキーとなる、集合を表すクラスである。 -`std::flat_multiset`は、ノードベースで実装される[`std::multiset`](/reference/set/multiset.md)、ハッシュテーブルで実装される[`std::unordered_multiset`](/reference/unordered_set/unordered_multiset.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。これはほかの実装と比較して、メモリ使用量と列挙速度において優位であり、一方で挿入速度と検索速度はほかの実装に劣る。 +`std::flat_multiset`は、ノードベースで実装される[`std::multiset`](/reference/set/multiset.md)、ハッシュテーブルで実装される[`std::unordered_multiset`](/reference/unordered_set/unordered_multiset.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。 + +ほかの連想コンテナとの比較としては、 + +- メモリ使用量と列挙速度において優位 +- 挿入速度と削除速度はほかの実装に劣る +- 検索速度は、[`std::multiset`](/reference/set/multiset.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、[`std::unordered_multiset`](/reference/unordered_set/unordered_multiset.md)よりは劣る また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列をラップして扱う実装となっている。 diff --git a/reference/flat_set/flat_set.md b/reference/flat_set/flat_set.md index 70debad4d8..a60bc16592 100644 --- a/reference/flat_set/flat_set.md +++ b/reference/flat_set/flat_set.md @@ -18,7 +18,13 @@ namespace std { ## 概要 `std::flat_set`は、重複しない要素を格納する連想コンテナの一種であり、要素自身がキーとなる、集合を表すクラスである。 -`std::flat_set`は、ノードベースで実装される[`std::set`](/reference/set/set.md)、ハッシュテーブルで実装される[`std::unordered_set`](/reference/unordered_set/unordered_set.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。これはほかの実装と比較して、メモリ使用量と列挙速度において優位であり、一方で挿入速度と検索速度はほかの実装に劣る。 +`std::flat_set`は、ノードベースで実装される[`std::set`](/reference/set/set.md)、ハッシュテーブルで実装される[`std::unordered_set`](/reference/unordered_set/unordered_set.md)とは異なり、ソート済み配列と二分探索の組み合わせで実装される。 + +ほかの連想コンテナとの比較としては、 + +- メモリ使用量と列挙速度において優位 +- 挿入速度と削除速度はほかの実装に劣る +- 検索速度は、[`std::set`](/reference/set/set.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、[`std::unordered_set`](/reference/unordered_set/unordered_set.md)よりは劣る また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列をラップして扱う実装となっている。 From 564a211a19cc3e65bf164651813f2823480c81d0 Mon Sep 17 00:00:00 2001 From: Akira Takahashi Date: Mon, 6 Oct 2025 17:51:39 +0900 Subject: [PATCH 2/2] =?UTF-8?q?unordered=5Fmap=E3=81=A8=E3=81=AE=E6=AF=94?= =?UTF-8?q?=E8=BC=83=E6=96=87=E8=A8=80=E3=82=92=E8=A6=8B=E7=9B=B4=E3=81=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reference/flat_map/flat_map.md | 2 +- reference/flat_map/flat_multimap.md | 2 +- reference/flat_set/flat_multiset.md | 2 +- reference/flat_set/flat_set.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reference/flat_map/flat_map.md b/reference/flat_map/flat_map.md index 767f0fa324..b63924ae8e 100644 --- a/reference/flat_map/flat_map.md +++ b/reference/flat_map/flat_map.md @@ -26,7 +26,7 @@ namespace std { - メモリ使用量と列挙速度において優位 - 挿入速度と削除速度はほかの実装に劣る -- 検索速度は、[`std::map`](/reference/map/map.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、[`std::unordered_map`](/reference/unordered_map/unordered_map.md)よりは劣る +- 検索速度は、[`std::map`](/reference/map/map.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、サイズが大きいときは[`std::unordered_map`](/reference/unordered_map/unordered_map.md)に劣る また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列と値の配列の2つを内部で持ち、それを[`std::ranges::zip_view`](/reference/ranges/zip_view.md)で綴じあわせて扱う実装となっている。 diff --git a/reference/flat_map/flat_multimap.md b/reference/flat_map/flat_multimap.md index 6f43109525..f857ebef2e 100644 --- a/reference/flat_map/flat_multimap.md +++ b/reference/flat_map/flat_multimap.md @@ -26,7 +26,7 @@ namespace std { - メモリ使用量と列挙速度において優位 - 挿入速度と削除速度はほかの実装に劣る -- 検索速度は、[`std::multimap`](/reference/map/multimap.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、[`std::unordered_multimap`](/reference/unordered_map/unordered_multimap.md)よりは劣る +- 検索速度は、[`std::multimap`](/reference/map/multimap.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、サイズが大きいときは[`std::unordered_multimap`](/reference/unordered_map/unordered_multimap.md)に劣る また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列と値の配列の2つを内部で持ち、それを[`std::ranges::zip_view`](/reference/ranges/zip_view.md)で綴じあわせて扱う実装となっている。 diff --git a/reference/flat_set/flat_multiset.md b/reference/flat_set/flat_multiset.md index ca7e9f6f69..3c6c273bec 100644 --- a/reference/flat_set/flat_multiset.md +++ b/reference/flat_set/flat_multiset.md @@ -24,7 +24,7 @@ namespace std { - メモリ使用量と列挙速度において優位 - 挿入速度と削除速度はほかの実装に劣る -- 検索速度は、[`std::multiset`](/reference/set/multiset.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、[`std::unordered_multiset`](/reference/unordered_set/unordered_multiset.md)よりは劣る +- 検索速度は、[`std::multiset`](/reference/set/multiset.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、サイズが大きいときは[`std::unordered_multiset`](/reference/unordered_set/unordered_multiset.md)に劣る また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列をラップして扱う実装となっている。 diff --git a/reference/flat_set/flat_set.md b/reference/flat_set/flat_set.md index a60bc16592..13d6dd0891 100644 --- a/reference/flat_set/flat_set.md +++ b/reference/flat_set/flat_set.md @@ -24,7 +24,7 @@ namespace std { - メモリ使用量と列挙速度において優位 - 挿入速度と削除速度はほかの実装に劣る -- 検索速度は、[`std::set`](/reference/set/set.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、[`std::unordered_set`](/reference/unordered_set/unordered_set.md)よりは劣る +- 検索速度は、[`std::set`](/reference/set/set.md)より高速であることが期待できるが (計算量としては同じ対数時間だが、メモリアクセスが高速)、サイズが大きいときは[`std::unordered_set`](/reference/unordered_set/unordered_set.md)に劣る また、このクラスは分類としては[`std::queue`](/reference/queue/queue.md)や[`std::stack`](/reference/stack/stack.md)と同様のコンテナアダプタに分類され、キーの配列をラップして扱う実装となっている。