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

C++のSTLを使ってベクトル内の最大要素を求める方法

このチュートリアルでは、C++のSTL(標準テンプレートライブラリ)を使用して、ベクトルの中から最大要素を見つける方法について解説します。

ベクトルから最大要素を取得するには、<algorithm>ヘッダーに用意されているmax_element()関数を使用します。この関数は、指定したイテレータの範囲[first, last)の中から最大の要素を指すイテレータを返します。戻り値はイテレータであるため、先頭に間接参照演算子(*)を付けることで、実際の要素の値を取得できます。

サンプルコード

#include <bits/stdc++.h>
using namespace std;
int main(){
    // ベクトルの定義
    vector<int> a = { 1, 45, 54, 71, 76, 12 };
    cout << "Vector: ";
    for (int i = 0; i < a.size(); i++)
        cout << a[i] << " ";
    cout << endl;
    // 最大要素の検索
    cout << "Max Element = " << *max_element(a.begin(), a.end());
    return 0;
}

実行結果

Vector: 1 45 54 71 76 12
Max Element = 76

解説

上記のコードでは、まず整数型のベクトルaを初期化し、forループですべての要素を出力しています。その後、*max_element(a.begin(), a.end())を呼び出すことで、ベクトル全体の範囲から最大値「76」を取得しています。

なお、max_element()の計算量はO(n)であり、要素数に比例して処理時間が増加します。また、同様の方法で*min_element()を使えば最小要素も簡単に求められるため、セットで覚えておくと便利です。

  1. C++で行列の平均ベクトルを求める方法をわかりやすく解説

    M × N の行列が与えられたとき、その平均ベクトルを求めることを考えます。例えば、次のような 3 × 3 の行列があるとします。123456789このとき、平均ベクトルは [4, 5, 6] となります。これは、各列の平均値がそれぞれ次のように計算されるためです。1列目:(1 + 4 + 7) / 3 = 42列目:(2 + 5 + 8) / 3 = 53列目:(3 + 6 + 9) / 3 = 6この例からも分かるように、行列の平均ベクトルとは「各列の平均値を要素として持つベクトル」のことです。したがって、行列の各列ごとに平均を計算し、その結果を順に並べるだけで平均ベクトルを求められます。

  2. C++で補助スタックを使わずにO(1)でスタックの最大値を取得する方法

    スタックに格納されている要素の中から最大値をO(1)の時間で取得できるスタックを実装したいと考えます。ただし、ここには重要な制約があります。補助スタックなどの追加データ構造を使用してはならず、追加スペースはO(1)でなければなりません。アルゴリズムのポイントこの問題は、ユーザー定義のスタッククラスに現在の最大値を保持する変数を持たせ、push時に数式を使って値を「エンコード」することで解決できます。各操作は次のように処理します。push操作:挿入する要素xが現在の最大値より大きい場合は「2 * x − max」をスタックにプッシュし、最大値をxに更新します。そうでなければ、xをそのままプッシュ