我试图在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,其中该值为?
解决方法
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();
虽然对任何一种方式的优点都存在意见分歧.见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_element和http://en.cppreference.com/w/cpp/iterator/distance