首先,我使用Intel Math Kernel Library API分配了巨大的块内存。之后,我想将此数组设置为特定值,例如1234.5678。我计划使用void* memset( void* dest, int ch, std::size_t count );
函数,但似乎该函数只能设置int值。我可以使用简单的for循环来解决此问题。但是,我认为使用for loop
为如此大的块设置初始值不是很有效。所以我的问题是
for loop
来初始化如此大的块内存的方法最佳答案
您可以使用 std::fill_n
为数组的每个值分配一个值
#include <algorithm>
std::fill_n(data, count, 1234.5678);
请注意,即使您使用原始的for循环,许多编译器也会生成相同的代码
for (std::size_t i = 0; i < count; ++i)
{
data[i] = 1234.5678;
}
参见此Compiler Explorer示例,在上述两种情况下,上述代码均生成相同的汇编代码
void fill_a(double *,unsigned __int64) PROC ; fill_a
$LN14:
sub rsp, 8
test rdx, rdx
je SHORT $LN6@fill_a
mov QWORD PTR [rsp], rdi
mov rax, 4653144502051863213 ; 40934a456d5cfaadH
mov rdi, rcx
mov rcx, rdx
rep stosq
mov rdi, QWORD PTR [rsp]
$LN6@fill_a:
add rsp, 8
ret 0
关于c++ - 如何将巨大的头部分配数组设置为特定的 float C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62305053/