c++ - C++ 中最快的数组初始化

标签 c++ arrays memory c++03

将整数数组初始化为给定值的最快方法是什么?

如果我有 char 数组,我可以使用 memset:

char a[N];
memset( a, value, N );

如果数组类型 != char 和值 != 0 或 -1,我无法执行 memset:

int a[N];
memset( a, value, N*sizeof(int) ); // INCORRECT!

所以我想知道是否有一种方法可以对其他数组类型进行类似的内存初始化。

最佳答案

使用std::fill :

char a[N];
std::fill(std::begin(a), std::end(a), value);

注意 std::beginstd::end 是从 C++11 开始定义的。

如果您使用的是 C++03,那么这会起作用:

char a[N];
std::fill(a, a + N, value);

关于c++ - C++ 中最快的数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19590002/

相关文章:

php - 如何从数据库中检索信息并存储在多维数组中

javascript - 为什么我的集合组查询没有结果?

arrays - 用 numpy 和 csv 绘制移动平均线

multithreading - CFThread GC开销限制已达到的问题

algorithm - 广度优先目录遍历 : Is it possible with O(log n) memory?

objective-c - 释放的对象什么时候最终被销毁?

c++ - Operator = function 和 add 函数似乎不能共存

c++ - so 中 undefined symbol (在链接对象中定义)

c++ - 如何输入特定位数的C++?

c++ - 基类和派生类中的相同数据成员