gpt4 book ai didi

c++ - 如何在不进行多次传递的情况下找到范围内最小的所有元素(c++)

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:02:54 24 4
gpt4 key购买 nike

我们可以使用算法库中的函数 std::min_element 来获取范围内的最小元素。

#include <algorithm>
#include <vector>
std::vector<int> v{3, 1, 4, 1, 5, 9};
std::vector<int>::iterator it = std::min_element(std::begin(v), std::end(v));

迭代器“it”指向 vector 中的第二个元素。

是否有可能在不在容器上迭代多次的情况下获得所有最小元素(此处为 v[1] 和 v[3])?

谢谢

最佳答案

当然可以,但不能使用 std::min_element

像这样:

template<typename ITER>
std::vector<ITER> find_all_min(ITER begin, ITER end){
auto min = *begin;
std::vector<ITER> ret{ begin };
for (++begin; begin != end; ++begin) {
if (*begin < min) {
min = *begin;
ret.clear();
ret.push_back(begin);
} else if (*begin == min) {
ret.push_back(begin);
}
}
return ret;
}

我的示例假设 begin < end .

我们只是遍历容器,找到最小元素,记住它是迭代器,然后放入迭代器的 vector 中。

关于c++ - 如何在不进行多次传递的情况下找到范围内最小的所有元素(c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40903933/

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