Gre*_*zak 1 c c++ memory struct memcpy
我想用相同的值填充MyStruct数组.如何以最快和最简单的方式完成?我正在运行相当低级的方法,比如memset
或memcpy
.
编辑:std::fill_n
确实符合并且工作正常.但它是C++的方式.如何在纯C中完成?
struct MyStruct
{
int a;
int b;
};
void foo()
{
MyStruct abc;
abc.a = 123;
abc.b = 321;
MyStruct arr[100];
// fill 100 MyStruct's with copy of abc
std::fill_n(arr, 100, abc); // working C++ way
// or maybe loop of memcpy? But is it efficient?
for (int i = 0; i < 100; i++)
memcpy(arr[i],abc,sizeof(MyStruct));
}
Run Code Online (Sandbox Code Playgroud)
小心地正确键入类型的名称(区分大小写)并且在定义之后不要忘记分号struct
,除此之外,您的程序应该编译没有问题:
#include <iostream>
#include <algorithm>
struct MyStruct
{
int a;
int b;
}; // <------------- HERE
int main() {
MyStruct abc;
abc.a = 123;
abc.b = 321;
MyStruct arr[100];
std::fill_n(arr, 100, abc);
std::cout << arr[99].b;
}
Run Code Online (Sandbox Code Playgroud)
输出321
.
"怎样才能以最快最简单的方式完成?"
最简单的方法可能是使用std::vector
和相应的构造函数:
#include <vector>
void foo()
{
MyStruct abc;
abc.a = 123;
abc.b = 321;
std::vector<MyStruct> vec(100, abc);
...
}
Run Code Online (Sandbox Code Playgroud)