C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何使用1个非常大的数组快速初始化大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个很大的阵列:
int* arr = new int[BIGnumbER];

如何用1号码快速填充它.通常我会这样做@H_801_5@

for(int i = 0; i < BIGnumbER; i++)
    arr[i] = 1

但我认为这需要很长时间.@H_801_5@

我可以使用memcpy或类似的吗?@H_801_5@

解决方法

您可以尝试使用标准功能 std::uninitialized_fill_n
#include <memory>

// ...

std::uninitialized_fill_n(arr,BIGnumbER,1);

在任何情况下,当涉及到性能时,规则是总是进行测量以支持您的假设 – 特别是如果您要放弃一个清晰,简单的设计来接受更复杂的设计,因为所谓的性能改进.@H_801_5@

编辑:@H_801_5@

请注意 – as Benjamin Lindley mentioned in the comments – 对于普通类型std :: uninitialized_fill_n没有比更明显的std::fill_n带来任何优势.对于非平凡类型存在优势,因为Std :: uninitialized_fill将允许您分配内存区域然后构造对象到位.@H_801_5@

但是,不应该陷入为未初始化的内存区域调用std :: uninitialized_fill_n的陷阱.例如,以下内容将给出未定义的行为:@H_801_5@ @H_255_2@my_object* v = new my_object[BIGnumbER]; std::uninitialized_fill_n(my_object,my_object(42)); // UB!

大佬总结

以上是大佬教程为你收集整理的c – 如何使用1个非常大的数组快速初始化全部内容,希望文章能够帮你解决c – 如何使用1个非常大的数组快速初始化所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。