gpt4 book ai didi

c++ - C/C++ 用一个值填充结构数组

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:05 25 4
gpt4 key购买 nike

我想用相同的值填充 MyStruct 数组。如何以最快和最简单的方式完成?我正在使用相当低级的方法,例如 memsetmemcpy

编辑: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));
}

最佳答案

注意正确输入类型名称(区分大小写)并且不要忘记 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;
}

输出 321


“如何以最快最简单的方式完成?”

最简单的方法可能是使用 std::vector 及其适当的构造函数:

#include <vector>

void foo()
{
MyStruct abc;
abc.a = 123;
abc.b = 321;

std::vector<MyStruct> vec(100, abc);
...
}

关于c++ - C/C++ 用一个值填充结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com