如果我有 a std::vector<int>
,我可以通过减去两个迭代器来获得最小元素的索引:
int min_index = std::min_element(vec.begin(), vec.end()) - vec.begin();
但是,对于没有随机访问迭代器的容器,例如 a std::list<int>
,这是行不通的。当然,可以做类似的事情
int min_index = std::difference(l.begin(), std::min_element(l.begin(), l.end()));
但随后我必须遍历列表两次。
我可以通过仅遍历列表一次来使用 STL 算法获得具有最小值的元素的索引,还是必须编写自己的 for 循环?