bool isinf(double a) 和 bool isnan(double a)
定义在std中,分别判断浮点型数据a是否无穷和是否非法
nth_element_array
应用的范围由它的第一个和第三个参数指定。第二个参数是一个指向第 n 个元素的迭代器。如果这个范围内的元素是完全有序的,nth_dement() 的执行会导致第 n 个元素被放置在适当的位置。这个范围内,在第 n 个元素之前的元素都小于第 n 个元素,而且它后面的每个元素都会比它大。算法默认用 < 运算符来生成这个结果。可以输入第四个参数改变默认的比较函数
使用array和vector的例子如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
std::vector<int> numbers {22, 7, 93, 45, 19, 56, 88, 12, 8, 7, 15, 10};
size_t count {5};
std::nth_element(std::begin(numbers), std::begin(numbers) + count, std::end(numbers)) ;
for(auto c:numbers)std::cout << c << " ";
return 1;
}
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
int main(){
int numbers[] = {22, 7, 93, 45, 19, 56, 88, 12, 8, 7, 15, 10};
size_t count {5};
int * begin = numbers;
int * end = numbers + 12;
int *middle = numbers + static_cast<int>(std::floor((end - begin) / 2));
std::nth_element(begin, middle, end) ;
for(int i = 0; i < 12; i ++)std::cout << numbers[i] <<(i < 11 ? " ":"");
return 1;
}
输出都是
10 7 7 8 12 15 19 22 45 93 88 56