2016-10-04 15 views
0

私はC++にはとても新しいです。今週始めたばかりです。質問で述べたようにベクトルの最小値と最大値を検索し、それらのインデックスを返す関数

、私はベクトルvector<int> pricelist{10,23,45,12,32}での最高値と最低値を見つけようとしていますので、私は0と2

public: 
Prices(const int lowestPriceIn, const int highestPriceIn) 
     : lowestPrice(lowestPriceIn), highestPrice(highestPriceIn) { 
    } 

のリターンを得ることを期待私は、関数を入れたいです方法lowestNHighestPrices()

私はベクトルを反復するループを作成できると仮定していますが、どの値が最小値と最大値になるかはどのように決まりますか?そして、どのように私はインデックスだけではなく、要素を取得するのだろうか?

2つのint変数を返す2つのgetメソッドがあります.1つは最小値、もう1つは最高値です。

int getlowestPrice() const { 
     return lowestPrice; 
    } 

    int gethighestPrice() const { 
     return highestPrice; 
    } 
+2

検索ベクトル内の最小/最大値。次に、イテレータからインデックスを取得する方法を検索します。どちらも、ここで何度も尋ねられ答えられました。 – juanchopanza

+1

['std :: minmax_element'](http://en.cppreference.com/w/cpp/algorithm/minmax_element) – 101010

答えて

1
int getlowestPrice() const { 
    vector<int>::iterator it = std::min_element(pricelist); 
    lowestPrice = it - pricelist.begin(); 
    return lowestPrice; 
} 

int gethighestPrice() const { 
    vector<int>::iterator it = std::max_element(pricelist); 
    highestPrice = it - pricelist.begin(); 
    return highestPrice; 
} 
+0

'ベクトル iterator it 'はどのようにコンパイルされますか? –

4

あなたは次のように、一度に最小値と最大値とそれぞれの指標の両方を取得するためにstd::minmax_elementを使用することができます取得する方法について

std::vector<int> v {10,23,45,12,32}; 
auto mm = std::minmax_element(v.begin(), v.end()); 
auto idx_min = std::distance(v.begin(), mm.first); 
auto idx_max = std::distance(v.begin(), mm.second); 

Live Demo

+0

私はエラーが発生し続けるstd名前空間にはメンバminmax_elementがありません。これはなぜですか? – LovesPie

+0

@LovesPieあなたは ''ヘッダーをインクルードしましたか?あなたのコンパイラはC++ 11をサポートしていますか? – 101010

+0

ヘッダーが何であるかを完全にはわかっていません。(私はこの言葉にとても慣れていないと言っています)....そしてはい、それはC++ 11をサポートしています。 – LovesPie

関連する問題