这是我在C ++中分配和初始化数组的方法。
char *dataPtr;
dataPtr= new char [40000];
int i;
for(i=0;i<40000;i++)
{
dataPtr[i]=200;
}
还有其他更快更清洁的方法来实现这一点,因为for循环需要相当长的时间才能完成我的应用程序吗?
答案 0 :(得分:4)
使用std::vector
:
std::vector<char> data(40000, 200);
答案 1 :(得分:4)
您可以在运行时使用memset()
,它具有优化程序集的核心和SSE / SSE2 / etc指令。 memset()
函数旨在完成此任务:尽可能快地将char
数组中的每个char
设置为特定值。
#include <cstring>
char *dataPtr = new char[LENGTH];
std::memset(dataPtr, 200, LENGTH);
但是,现代编译器会为您执行此操作,您可以检查程序集,并且您可能会在使用memset()
循环的原始代码中找到for
或类似内容的调用。它无论如何只有40 kB,所以你不会节省太多时间,除非你必须经常初始化数组。
答案 2 :(得分:3)
要按200
初始化每个数组元素,您可以使用
std::fill_n(dataPtr, 40000, 200);