C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++ STLのset::equal_range()関数とは?構文・使い方・戻り値を徹底解説

本記事では、C++ STLに用意されている set::equal_range() 関数について、その構文、動作の仕組み、そして戻り値の内容を詳しく解説します。

C++ STLにおけるset(セット)とは?

C++ STLにおけるsetは、要素が必ず一意(ユニーク)であることが保証されたコンテナです。これは、要素の値そのものがその要素を識別する役割を果たすためです。一度setコンテナに追加した値は後から変更できませんが、値の削除や新たな追加は可能です。内部的には二分探索木として実装されており、高速な検索が行えるのが特徴です。

set::equal_range()とは

equal_range() はC++ STLに組み込まれた関数で、<set> ヘッダファイル内で定義されています。この関数は、引数として渡した値を含む範囲(レンジ)をsetコンテナから返します。setはすべての値が一意であるため、見つかった範囲内の等価な要素は1つだけになります。もし指定した値がコンテナ内に存在しない場合は、範囲の長さがゼロとなり、両方のイテレータは最初の位置を指します。

構文

Set1.equal_range(const type_t& value);

パラメータ

この関数は1つのパラメータを受け取ります。検索対象となる要素の値です。

戻り値

この関数はpair(ペア)を返します。具体的には、コンテナの下限(lower bound)から、検索対象の要素までを指すイテレータの範囲です。

使用例

入力: set<int> myset = {10, 20, 30, 40};
出力: 30の下限(lower bound)は30

サンプルコード

#include <bits/stdc++.h>
using namespace std;
int main(){
    set<int> mySet;
    mySet.insert(10);
    mySet.insert(20);
    mySet.insert(30);
    mySet.insert(40);
    mySet.insert(50);
    cout<<"Elements before applying range() Function : ";
    for (auto i = mySet.begin(); i != mySet.end(); i++)
        cout << *i << " ";
    auto i = mySet.equal_range(30);
    cout<<"\nlower bound of 30 is "<< *i.first;
    cout<<"\nupper bound of 30 is "<< *i.second;
    i = mySet.equal_range(40);
    cout<<"\nlower bound of 40 is " << *i.first;
    cout<<"\nupper bound of 40 is "<< *i.second;
    i = mySet.equal_range(10);
    cout<<"\nlower bound of 10 is "<< *i.first;
    cout<<"\nupper bound of 10 is "<< *i.second;
    return 0;
}

出力結果

上記のコードを実行すると、以下のような出力が得られます。

Elements before applying range() Function : 10 20 30 40 50
lower bound of 30 is 30
upper bound of 30 is 40
lower bound of 40 is 40
upper bound of 40 is 50
lower bound of 10 is 10
upper bound of 10 is 20
  1. C++ STLのatan2()関数の使い方を徹底解説!構文・戻り値・サンプルコード付き

    atan2()関数は、座標yとxから逆正接(アークタンジェント)を求めるための関数です。ここでいうyとxは、それぞれy座標とx座標の値を指します。atan2()はC++のSTL(標準テンプレートライブラリ)に組み込まれている関数で、<cmath>ヘッダをインクルードすることで利用できます。通常のatan()関数と異なり、atan2()はxの符号も考慮して正しい象限の角度を返すため、実務でも広く使われています。atan2()関数の構文atan2(dataType var1, dataType var2)構文を見ると分かるように、atan2()関数はfloat型、double型、lon

  2. C++ STLのacos()関数とは?使い方をサンプルコード付きで解説

    C++ STLのacos()関数とはacos()関数は、ラジアン単位で与えられた値に対する逆余弦(アークコサイン)を返す関数で、C++のSTLに標準で組み込まれています。この関数は<cmath>ヘッダで定義されています。acos()関数の構文acos(var)構文から分かるように、acos()関数はfloat、double、long doubleのいずれかのデータ型を持つ引数varを1つ受け取ります。引数の値は-1から1の範囲内でなければなりません。範囲外の値を渡した場合はNaN(非数)が返される点に注意が必要です。戻り値は、-πからπの範囲におけるvarの逆余弦(ラジアン単位)で