gpt4 book ai didi

c++ - std::list 中最小元素的索引

转载 作者:可可西里 更新时间:2023-11-01 18:39:45 28 4
gpt4 key购买 nike

如果我有一个 std::vector<int> ,我可以通过减去两个迭代器来获得最小元素的索引:

int min_index = std::min_element(vec.begin(), vec.end()) - vec.begin();

但是,对于没有随机访问迭代器的容器,例如 std::list<int> ,这是行不通的。当然,可以做类似的事情

int min_index = std::difference(l.begin(), std::min_element(l.begin(), l.end()));

但随后我必须遍历列表两次。

我是否可以通过仅遍历列表一次来使用 STL 算法获得具有最小值的元素的索引,还是我必须编写自己的 for 循环代码?

最佳答案

您必须编写自己的函数,例如:

template <class ForwardIterator>
std::size_t min_element_index ( ForwardIterator first, ForwardIterator last )
{
ForwardIterator lowest = first;
std::size_t index = 0;
std::size_t i = 0;
if (first==last) return index;
while (++first!=last) {
++i;
if (*first<*lowest) {
lowest=first;
index = i;
}
}
return index;
}

关于c++ - std::list 中最小元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9687957/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com