gpt4 book ai didi

c++ - std::nth_element 提供了错误的值

转载 作者:搜寻专家 更新时间:2023-10-30 23:55:42 26 4
gpt4 key购买 nike

我想从给定的未排序 vector 中获取第 n 个最小的元素。我发现标准库中有一个方法。但是我不明白下面的结果。

我使用条目为 {3,4,5,2,3} 的 vector ,并希望获得第二小的元素。如果我执行下面的代码,我在第二个位置得到数字 2,实际上它应该是 3。因为 2 是第一个最小的元素而不是第二个。

我的错误是什么?

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
std::vector<size_t> temp;
temp.assign({3,4,5,2,3});
std::nth_element (temp.begin(), temp.begin()+2, temp.end());
std::cout << std::endl;
for(size_t i=0;i<temp.size();i++){ printf("%.2f\n",(double)temp[i]); }
}

最佳答案

temp.begin()+2 为您提供 vector 的第三个元素,而不是第二个。第一个元素是 temp.begin()(即 temp.begin() + 0),第二个元素是 temp.begin() + 1。所以你想这样做:

std::nth_element (temp.begin(), temp.begin()+1, temp.end());

关于c++ - std::nth_element 提供了错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30696679/

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