1. ホーム
  2. c++

vector<double> で std::max_element を使用する。

2023-11-22 09:02:15

質問

私は std::min_elementstd::max_element を使って、double 型のベクトルの最小値と最大値を返します。 私のコンパイラは、現在私がそれらを使用しようとしている方法を好まないし、エラーメッセージも理解できない。 もちろん、最小値と最大値を求める独自の手続きを書くこともできますが、関数の使用方法を理解したいのです。

#include <vector>
#include <algorithm>

using namespace std;

int main(int argc, char** argv) {

    double cLower, cUpper;
    vector<double> C;

    // Code to insert values in C is not shown here

    cLower = min_element(C.begin(), C.end());
    cUpper = max_element(C.begin(), C.end());

    return 0;
}

以下は、コンパイラのエラーです。

../MIXD.cpp:84: error: cannot convert '__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >' to 'double' in assignment
../MIXD.cpp:85: error: cannot convert '__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >' to 'double' in assignment

私は何を間違えているのでしょうか?

どうすればいいのでしょうか?

min_element そして max_element は値ではなくイテレータを返します。そのため *min_element...*max_element... .