如何获得向量中最小元素的索引?

M12*_*21K 2 c++ vector

我想知道vector的哪个元素是最小的,但min_element将迭代器返回给该元素。所以我尝试了这个:

vector<int> vec = {4,5,0,1,2,3} ;
int min_element_index = min_element(vec.begin(), vec.end()) - vec.begin();
Run Code Online (Sandbox Code Playgroud)

但是,我不确定这将始终有效。我不知道向量在内存中的存储方式,我担心使用时会中断push_back

Jab*_*cky 10

您也可以这样做:

std::vector<int>::iterator it = std::min_element(std::begin(vec), std::end(vec));
std::cout << "index of smallest element: " << std::distance(std::begin(vec), it);
Run Code Online (Sandbox Code Playgroud)

甚至更简单:

auto it = std::min_element(std::begin(vec), std::end(vec));
std::cout << "index of smallest element: " << std::distance(std::begin(vec), it);
Run Code Online (Sandbox Code Playgroud)

要么:

std::cout << "index of smallest element: " <<
std::distance(std::begin(v), std::min_element(std::begin(v), std::end(v)))
Run Code Online (Sandbox Code Playgroud)

  • 我最喜欢这个答案,因为它更通用,并且也适用于非随机访问容器。 (4认同)