gpt4 book ai didi

c - 获取至少三个或更多参数的函数

转载 作者:行者123 更新时间:2023-11-30 18:16:12 25 4
gpt4 key购买 nike

<math.h> C 库中的函数 fmin(x,y)返回两个参数 x 和 y 的最小值,例如 the C++ reference 中记录的.

不过有没有类似的功能fminimum(a,b,c,...x,y,z)是否可以找到相同数据类型的三个或更多参数中的最小值?

最佳答案

注意:该问题最初标记为 C++。原始答案仅适用于 C++,但我提供了遵循相同原则的 C 解决方案。

这个想法是,将表示范围开始和结束的一对指针传递给函数,并返回指向最小元素的指针。

int* min_element(int *start, int *end)
{
if (start == end) return end;

int *min = start++;
for (; start != end; ++start)
if (*start < *min) min = start;

return min;
}

用法:

int data[] = {1, 5, 3, 66, 4, 81, 23, 2, 6};
int * min = min_element(data, data + 9);
if (min != data + 9)
{
// range was not empty, min value is *min
}
<小时/>

原始C++回答 std::min_element ,它为您提供一个迭代器,指向由一对迭代器指定的范围内的最小元素。

int arr[] = { 3,1,6,8,9,34,17,4,8};
auto it = std::min_element(std::begin(arr), std::end(arr));

编辑 2:从删除的答案来看,C++11 有一个 std::min 需要 initializer_list 的过载,所以你可以说

auto minval = std::min({a, b, c, x, y, z});

哪里a , b , c等都是一种类型支持 operator< .

关于c - 获取至少三个或更多参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18488227/

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