gpt4 book ai didi

python - 什么是 C 相当于 python 的 map()

转载 作者:行者123 更新时间:2023-11-28 20:46:59 25 4
gpt4 key购买 nike

情况是这样的:

输入由空格分隔的整数/ float / double 类型的数据组成。数据类型将相同。输入的长度在运行时决定。输入显示如下(每行一个测试用例)

1 5 7 9
2 32 5 5 6
2 5 7 43 73 364
1 2

在 python 中使用 map 函数,返回具有所需数据类型的输入列表。我需要使用 C 来实现相同的功能。这是我到目前为止所尝试的:

  1. 使用 fgets 并解析输入,但失败和/或缓慢的机会太多
  2. 使用 strtol()strok() 等函数,但它们仅在输入大小时已知时起作用。

关于如何去做有什么建议吗?

PS:输入的最大数量是已知的,输入的数量总是低于这个任意大的值,但它们的数量可以变化。

最佳答案

您的问题包含很多map() 无关的话题。你应该尽量避免这种情况,并更加专注。如果您对几件事情感到疑惑,请将它们分成各自的问题,不要只是对整个问题大发雷霆。

在 C 中,如果不先发明一种方法来描述所有涉及的数据,就无法编写通用的“应用此函数”代码,然后才有可能。

如果你的数据是整数,你需要这样的东西:

int * map_int(const int *input, size_t input_len, int (*func)(int x));

上面应该返回一个与输入相同大小的动态分配数组,其中每个元素都是在相应的输入元素上运行 func() 的结果。这可能与您需要的通用 map() 非常接近。

这可以很简单地实现,就像这样:

int * map_int(const int *input, size_t input_len, int (*func)(int x))
{
int *out = malloc(input_len * sizeof *out);
if(out != NULL)
{
for(size_t i = 0; i < input_len; ++i)
out[i] = func(input[i]);
}
return out;
}

请注意,上面将假定 func 是有效的;一个更合理的通用函数可能应该将 NULL 函数指针视为恒等映射。另请注意,它会进行堆分配并将所有权转移给调用者。一个更合理的实现或许也应该支持调用者拥有的缓冲区。

关于python - 什么是 C 相当于 python 的 map(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19907191/

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