gpt4 book ai didi

c++ - C 中有 fill_n 的等效函数吗?

转载 作者:行者123 更新时间:2023-12-04 07:20:38 26 4
gpt4 key购买 nike

如果我想翻译 fill_n从 CPP 到 C 的函数会是什么样子?
如果我有两个 fill_n下面的函数,我想填充它 0在 C 中我该怎么做?

fill_n(vaToPa, number_of_virtual_memory, 0);
fill_n(paToVa, number_of_physical_memory, 0);

最佳答案

对于字节,您可以使用 memset .对于 wchar_t您可以使用 wmemset .除此之外,标准库没有用于填充的通用函数。您可以制作一个,但它看起来不像模板那么干净,因此在大多数情况下您可能希望使用普通的 for 循环。它可能看起来像这样:

#include <stdio.h>
#include <string.h>

void my_fill_n(void *base, const void *fill, size_t nmemb, size_t size)
{
for (char *i = base; i < (char *)base + nmemb * size; i += size)
memcpy(i, fill, size);
}

int main(void)
{
int a[10];
my_fill_n(a, &(int){42}, sizeof a / sizeof *a, sizeof *a);
for (unsigned i = 0; i < sizeof a / sizeof *a; ++i)
printf("%d\n", a[i]);
}
输出:
42
42
42
42
42
42
42
42
42
42
请注意 my_fill_nstd::fill_n相比也有限因为它只适用于数组,而不适用于任何其他数据结构。

关于c++ - C 中有 fill_n 的等效函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68524216/

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