从给定的未分类矢量我想得到第n个最小元素.我发现标准库中有一个方法.但我不明白以下结果.
我使用条目{3,4,5,2,3}来获取向量,并希望拥有第2个最小元素.如果我执行以下代码,我在第二个位置得到数字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]); }
}
Run Code Online (Sandbox Code Playgroud)
temp.begin()+2为您提供向量的第三个元素,而不是第二个元素.第一个元素是temp.begin()(ie temp.begin() + 0),第二个元素是temp.begin() + 1.所以你想这样做:
std::nth_element (temp.begin(), temp.begin()+1, temp.end());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |