[英]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.