C++の標準ライブラリ(STL)を活用した便利な関数解説

c++
スポンサーリンク

はじめに

C++にはSTL(Standard Template Library)と呼ばれる標準ライブラリが用意されており、これを活用することでプログラムの可読性と効率性を向上させることができます。本記事では、STLに含まれる便利な関数 min, max, swap, sort, reverse を解説し、それぞれの使い方や注意点を紹介します。

min関数で最小値を取得

min関数の基本的な使い方

min 関数は、2つの値を比較し、そのうち小さい方の値を返します。使用するには <algorithm> ヘッダをインクルードする必要があります。

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    int answer = min(3, 5);
    cout << answer << endl; // 3
}

この例では min(3, 5) により 3 が返され、出力されます。

型の違いによるエラーの注意点

min 関数は、同じ型の値 を比較する必要があります。異なる型を比較しようとすると、コンパイルエラーが発生します。

int main() {
    double answer = min(2.12, 5); // エラー!
    cout << answer << endl;
}

このコードは 2.12(double型)と 5(int型)を比較しようとするため、型の不一致によりコンパイルエラーが発生します。エラーを避けるには、型を統一する必要があります。

int main() {
    double answer = min(2.12, 5.34); // OK
    cout << answer << endl; // 2.12
}

max関数で最大値を取得

max関数の基本的な使い方

max 関数は min 関数と同様に、2つの値を比較して大きい方の値を返します。

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    int answer = max(3, 5);
    cout << answer << endl; // 5
}

この例では max(3, 5) により 5 が返され、出力されます。min 関数と同じく、比較する値の型を統一する必要がある点に注意してください。

swap関数で値を入れ替える

2つの変数の値を交換する方法

swap 関数を使うことで、2つの変数の値を簡単に入れ替えることができます。

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    int a = 3;
    int b = 5;
    swap(a, b);
    cout << a << endl; // 5
    cout << b << endl; // 3
}

このコードでは、swap(a, b) によって ab の値が入れ替わり、a5b3 となります。

sort関数とreverse関数で配列を操作する

sort関数で昇順ソート

sort 関数を使用すると、配列やベクターを昇順(小さい順)に並び替えることができます。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() { vector<int> vec = {2, 5, 2, 1}; sort(vec.begin(), vec.end()); // {1, 2, 2, 5}

for (int i = 0; i < vec.size(); i++) { cout << vec.at(i) << " "; } cout << endl; }

reverse関数で降順ソート

reverse 関数を使うと、要素の順番を反転させることができます。sort 関数と組み合わせることで降順(大きい順)に並び替えることが可能です。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() { vector<int> vec = {2, 5, 2, 1}; sort(vec.begin(), vec.end()); // {1, 2, 2, 5} reverse(vec.begin(), vec.end()); // {5, 2, 2, 1}

for (int i = 0; i < vec.size(); i++) { cout << vec.at(i) << " "; } cout << endl; }

STL関数の応用と注意点

STL関数の組み合わせ

STLの関数は単体で使うだけでなく、複数を組み合わせて効率的にデータを処理することができます。

例えば、minmax を使ってベクター内の最小値と最大値を取得することが可能です。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() { vector<int> vec = {3, 1, 4, 1, 5, 9}; int min_val = *min_element(vec.begin(), vec.end()); int max_val = *max_element(vec.begin(), vec.end());

cout << "Min: " << min_val << endl; cout << "Max: " << max_val << endl; }

型の扱いに注意

STLの関数を使用する際には、比較するデータ型を統一することが重要です。異なる型を比較するとコンパイルエラーの原因になります。

これらの関数を適切に使うことで、より効率的で可読性の高いC++プログラムを作成することができます。

タイトルとURLをコピーしました