2017-03-01 3 views
6

C++でベクトルの最小要素を見つけようとしています。最下位要素の値とベクトル内のインデックスの位置の両方を返したいと思います。ここでは、C++でのベクトルの最小要素の検索

auto minIt = std::min_element(vec.begin(), vec.end()); 
    auto minElement = *minIt; 
     std::cout << "\nMinIT " << &minIt << " while minElement is " << minElement << "\n"; 

これは次のように返し、

MinIT 8152610 while minElement is 8152610 

は、どのように私は、この値はVEC(i)のインデックスiを得るか、私が試してみました何ですか?

+7

'MINIT - vec.beginを()' –

答えて

12

std::min_elementの返品はイテレータです。これはautoの使用により難読化されています。

ありますがあなたがより多くの "C++標準ライブラリ" である

std::distance(vec.begin(), std::min_element(vec.begin(), vec.end()));

を用いてベクターに少ない一般的な

std::min_element(vec.begin(), vec.end()) - vec.begin();

より-esqueそれの位置を取得することができますいずれの方法のメリットについての意見の相違。 What is the most effective way to get the index of an iterator of an std::vector?

さらにリファレンスを参照してください:http://en.cppreference.com/w/cpp/algorithm/min_elementhttp://en.cppreference.com/w/cpp/iterator/distance

+0

は、あなたの華麗な答えをありがとう!二次元ベクトルにも対応できるように拡大できますか?私は編集を通して私の質問を更新します! – PeterSM

+1

最初から新しい質問をするのが最善です。 Methinksの答えは非常に異なるでしょう。 – Bathsheba

関連する問題