我试图在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,其中该值为?
答案 0 :(得分: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();
虽然对任何一种方式的优点都存在意见分歧。见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