【C++】algorithmヘッダで出来ることと使い方【標準ライブラリ】

【C++】algorithmヘッダで出来ることと使い方【標準ライブラリ】

目次

ソート

`std::sort`を使うと、コンテナの要素を昇順または降順に並べ替えられる。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {5, 2, 8, 1, 3};
    std::sort(v.begin(), v.end());

    for (int x : v) {
        std::cout << x << " ";
    }
}

出力: `1 2 3 5 8`

`std::find`を使うと、コンテナ内の特定の要素を検索できる。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {10, 20, 30, 40, 50};
    auto it = std::find(v.begin(), v.end(), 30);

    if (it != v.end()) {
        std::cout << "見つかりました: " << *it << std::endl;
    } else {
        std::cout << "見つかりませんでした" << std::endl;
    }
}

最小値・最大値の取得

`std::min_element`や`std::max_element`を使うと、最小値・最大値の要素を取得できる。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {7, 2, 8, 4, 1};
    auto min_it = std::min_element(v.begin(), v.end());
    auto max_it = std::max_element(v.begin(), v.end());

    std::cout << "最小値: " << *min_it << std::endl;
    std::cout << "最大値: " << *max_it << std::endl;
}

累積演算

`std::accumulate`を使うと、要素の合計を計算できる。

#include <iostream>
#include <vector>
#include <numeric>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};
    int sum = std::accumulate(v.begin(), v.end(), 0);
    std::cout << "合計: " << sum << std::endl;
}

要素の変換

`std::transform`を使うと、要素を変更できる。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};
    std::transform(v.begin(), v.end(), v.begin(), [](int x) { return x * 2; });

    for (int x : v) {
        std::cout << x << " ";
    }
}

要素の削除

`std::remove`を使うと、特定の値を削除できる。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {1, 2, 3, 2, 4, 2, 5};
    v.erase(std::remove(v.begin(), v.end(), 2), v.end());

    for (int x : v) {
        std::cout << x << " ";
    }
}

重複の削除

`std::unique`を使うと、連続する重複を削除できる。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {1, 1, 2, 2, 3, 3, 4, 4, 5};
    v.erase(std::unique(v.begin(), v.end()), v.end());

    for (int x : v) {
        std::cout << x << " ";
    }
}

条件に基づく分割

`std::partition`を使うと、条件を満たす要素を前方に移動できる。

マージ

`std::merge`を使うと、2つのソート済みコンテナをマージできる。

順列の生成

`std::next_permutation`を使うと、次の辞書順の順列を生成できる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です