c++ - 如何将一个巨大的头部分配数组设置为特定的浮点数 C++
问题描述
起初,我使用英特尔数学内核库 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
推荐阅读
- php - Wordpress 自定义插件中的 Composer 自动加载
- angular - 如何将 storybook 集成到 antd angular(NG-ZORRO)
- php - 联系表格php奇怪的符号出现
- coq - 带有布尔值的 Coq `ring` 策略:不是有效的环方程
- javascript - TypeError: this.setState.darkMode 在尝试实现暗模式时不是函数
- node.js - node js html文件加载问题,我该如何解决?
- python-3.x - 错误的匹配正则表达式
- node.js - 我们如何在更新中使用 $subtract 聚合管道运算符和位置 $ 运算符?
- amazon-web-services - 如何在 EC2 实例上运行命令?SSM 中缺少 AWS-RunShellScript
- r - 根据文件扩展名选择文件的最佳方法(用 r 编写)