指定された並べ替えられていないベクトルから、n 番目に小さい要素を取得したいと考えています。標準ライブラリにメソッドがあることがわかりました。しかし、次の結果がわかりません。
エントリ {3,4,5,2,3} を持つベクトルを取得し、2 番目に小さい要素が必要です。次のコードを実行すると、2 番目の位置に数字 2 が表示されます。実際には 3 になるはずです。2 は 2 番目ではなく 1 番目に小さい要素だからです。
私の間違いは何ですか?
#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]); }
}