在C++中查找向量的最小元素

Pet*_*rSM 6 c++ vector

我试图在C++中找到向量的最小元素.我希望返回最低元素的值和向量中索引的位置.这是我尝试过的,

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

这将返回以下内容,

MinIT 8152610 while minElement is 8152610
Run Code Online (Sandbox Code Playgroud)

如何获得vec(i)的索引i,其中该值为?

Bat*_*eba 12

返回std::min_element是一个迭代器,你通过使用它来混淆auto.

您可以使用向量来获取它的位置

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

这更像是"C++标准库" - 而不是通用的

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

虽然对任何一种方式的优点都存在意见分歧.请参阅获取std :: vector的迭代器索引的最有效方法是什么?

进一步参考:http://en.cppreference.com/w/cpp/algorithm/min_elementhttp://en.cppreference.com/w/cpp/iterator/distance