map

[C++] std::mapでキーを構造体にする方法

C++のstd::mapでキーを構造体にするには、構造体に比較演算子(通常はoperator<)を定義する必要があります。 std::mapはキーをソートして管理するため、キーの大小関係を判断できる必要があるからです。 比較演算子を構

続きを読む »
map

[C++] std::mapで3要素を持つペアを扱う方法

C++のstd::mapで3要素を持つペアを扱うには、キーや値としてstd::tupleやカスタム構造体を使用します。 例えば、キーまたは値にstd::tuple<int, int, int>を指定することで3要素を格納可能です

続きを読む »
multimap

[C++] multimapのequal_rangeメソッドでの範囲取得と処理方法

C++のstd::multimapのequal_rangeメソッドは、指定したキーに対応する要素の範囲を取得するために使用されます。 このメソッドは、キーに一致する最初の要素とその次の要素(範囲の終端)を指すイテレータのペアを返します。 返

続きを読む »
multimap

[C++] mapとmultimapの違いについて解説

C++のmapとmultimapはどちらもキーと値のペアを格納する連想コンテナですが、主な違いはキーの重複可否です。 mapは各キーが一意でなければならず、同じキーを複数回挿入することはできません。 一方、multimapは同じキーを複数回

続きを読む »
map

[C++] std::mapで現在の要素数を取得する方法

C++のstd::mapで現在の要素数を取得するには、size()メンバ関数を使用します。 この関数は、マップに格納されているキーと値のペアの数を返します。 例えば、myMap.size()と記述することで、myMapに含まれる要素数を取得

続きを読む »
multiset

[C++] multisetで範囲指定して処理を行う方法

C++のstd::multisetでは、範囲指定して処理を行う際にlower_boundとupper_boundを使用します。 lower_boundは指定した値以上の最初の要素を指し、upper_boundは指定した値より大きい最初の要素

続きを読む »
multiset

[C++] multisetの特定の値に対して処理する方法

C++のstd::multisetでは、特定の値に対して処理を行う場合、equal_rangeメソッドを使用します。 このメソッドは、指定した値に一致する要素の範囲(イテレータのペア)を返します。 返された範囲をループで走査することで、特定

続きを読む »
multiset

[C++] multisetから要素を削除する方法

C++のstd::multisetから要素を削除するには、eraseメソッドを使用します。 特定の値を削除する場合、multiset.erase(value)を使うと、その値を持つすべての要素が削除されます。 一方、特定の要素を1つだけ削除

続きを読む »
multiset

[C++] multisetから最大値を持つ要素を検索する方法

C++のstd::multisetは要素が昇順に自動的にソートされるコンテナです。 そのため、最大値を持つ要素は常に最後の要素に位置します。 multisetのrbegin()メンバ関数を使用することで、最大値を効率的に取得できます。 例え

続きを読む »
multiset

[C++] multisetから最小値を持つ要素を検索する方法

C++のstd::multisetは要素が自動的に昇順にソートされるコンテナです。 そのため、最小値を持つ要素は常に先頭に位置します。 multisetのbegin()メソッドを使用することで、最小値を効率的に取得できます。 例えば、aut

続きを読む »
multiset

[C++] multisetから要素を検索する方法を解説

C++のstd::multisetで要素を検索するには、findメソッドを使用します。 findは指定した値を持つ要素へのイテレータを返します。 該当する要素がない場合、end()イテレータが返されます。 countメソッドを使えば、指定し

続きを読む »
multiset

[C++] 2つ以上のmultisetを結合する方法

C++で2つ以上のstd::multisetを結合するには、1つのmultisetに他のmultisetの要素を挿入します。 std::multisetは重複を許容するため、insertメソッドを使うことで簡単に結合できます。 たとえば、m

続きを読む »
multiset

[C++] multisetの計算量はいくつ?高速に処理可能?

C++のstd::multisetは、要素を自動的に昇順にソートし、重複を許容するデータ構造です。 内部的には平衡二分探索木(通常は赤黒木)で実装されており、以下の操作の計算量はすべて対数時間(\(O(\log n)\))で行われます:要素

続きを読む »
set

[C++] std::setで任意の要素を検索する方法

C++のstd::setで任意の要素を検索するには、メンバ関数findを使用します。 findは引数に検索したい値を取り、その値がセット内に存在する場合は該当要素へのイテレータを返し、存在しない場合はend()イテレータを返します。 例えば

続きを読む »
set

[C++] std::setで要素が存在するかを確認する方法

C++のstd::setで要素が存在するかを確認するには、findメソッドまたはcountメソッドを使用します。 findは指定した要素へのイテレータを返し、要素が存在しない場合はend()を返します。 一方、countは要素の存在を確認す

続きを読む »
set

[C++] std::setの初期化方法

C++のstd::setは、重複を許さない順序付きのコンテナで、いくつかの方法で初期化できます。 リスト初期化を使用する場合、std::set<int> s = {1, 2, 3};のように記述します。 また、別のコンテナから初

続きを読む »
set

[C++] std::setを使わない方が良い場面と代替STLの紹介

std::setは二分探索木を基盤としたデータ構造で、要素の挿入・削除・検索が平均で\(O(\log n)\)の計算量を持ちます。 しかし、頻繁な挿入や削除が不要で、単純な検索や順序を考慮しない場合、std::setはオーバーヘッドが大きく

続きを読む »
set

[C++] std::setを降順にする方法: カスタムコンパレータの利用

C++のstd::setはデフォルトで昇順に要素を格納しますが、降順にするにはカスタムコンパレータを指定します。 カスタムコンパレータは、比較関数オブジェクトを定義し、std::setのテンプレート引数として渡します。 この関数オブジェクト

続きを読む »
set

[C++] std::setの結合: 効率的に2つのセットをマージする方法

C++のstd::setを効率的に結合するには、std::setがソートされたデータ構造である特性を活かし、std::set::mergeやstd::set_unionを使用します。 std::set::mergeはC++17以降で利用可能

続きを読む »
Back to top button