C++ memset()用于长(64位)类型

Cri*_*sty 2 c++ memset

可能重复:
是否有memset()接受大于char的整数?

正如在memset的声明中可以看到的那样:

void * memset ( void * ptr, int value, size_t num );
Run Code Online (Sandbox Code Playgroud)

有没有办法使用这个memset函数(或STL库中包含的其他函数),以便您可以将内存设置为long long类型值?

我用它来初始化一个具有较大值的long long数组.

我必须说,我通过简单地迭代数组的每个值并将其设置为所需的值来"解决"这个问题.

Mar*_*k B 6

memset只使用传入的值的一个字节并进行逐字节初始化.如果要初始化long long具有特定值的数组,只需使用std::fillstd::fill_n让您的库和编译器尽可能地优化它(部分循环展开等).

另一种规范的C++方法是使用vector并让它的构造函数为你工作:

std::vector<long long> foo(length_of_array, 12345678901234LL);