2017-03-01 90 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)該指數在哪裏這個值是什麼?

+7

'MINIT - vec.begin()' –

回答

12

std::min_element的返回值是迭代器,您使用auto進行混淆。

可以使用

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

哪個更 「C++標準庫」 -esque得到它的向量的位置用不到的通用

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

雖然有對任何一種方式的優點的意見分歧。見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

最好從頭開始提出一個新問題。回答會有很大的不同。 – Bathsheba

相關問題