簡體   English   中英

如何獲取向量中最小元素的索引?

[英]How to get the index of the smallest element in a vector?

我想知道向量的哪個元素是最小的,但min_element返回元素的迭代器。 所以我嘗試了這個:

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

但是,我不確定這將永遠有效。 我不知道向量是如何存儲在內存中的,我擔心這會在我使用push_back時中斷。

你也可以這樣做:

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);

甚至更簡單:

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

要么:

std::cout << "index of smallest element: " <<
std::distance(std::begin(v), std::min_element(std::begin(v), std::end(v)))

保證向量成員存儲在連續的內存中,這在這里並不重要。

向量迭代器是隨機訪問迭代器,因此很好地定義了減去向量迭代器(這將始終與符合std::vector

要將矢量迭代器轉換為指針,可以執行&*(vector-iterator) ,但沒有理由在這里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM