std::transform 将一个结构数组复制到另一个结构数组
std::transform to copy one array of struct to another
我有以下结构。
typedef struct
{
uint32_t aa;
float32_t bb;
float32_t cc;
float32_t dd;
float32_t ee;
}struct_1;
typedef struct
{
uint32_t hh;
float32_t bb;
float32_t cc;
float32_t ii;
float32_t jj;
}struct_2;
我创建了结构数组,其中struct_1是动态分配的,struct_2是静态的。
struct_1 *array1 = new struct_1[300];
struct_2 array2[300];
如何有效地将内容从 array2 复制到 array1? 我不想在这里讨论,因为如果将来更改任何结构的类型,那么它会导致问题。
在这种情况下,我可以使用 std::transform 或 std::copy 吗?请帮我处理语法。
您可以使用std::transform
并提供转换函数:
std::transform(std::begin(array2), std::end(array2), array1, [](const struct_2& val) {
return struct_1{val.hh, val.bb, val.cc, val.ii, val.jj};
});
使用循环可能更容易:
struct_1* a1_p = array1;
for (const struct_2& s2 : array2) {
*a1_p++ = struct_1{ s2.hh, s2.bb, s2.cc, s2.ii, s2.jj };
}
这也允许您仅设置struct_1
的某些成员(例如,如果您添加了更多成员并且只想覆盖struct_2
中的相应成员(:
struct_1* a1_p = array1;
for (const struct_2& s2 : array2) {
struct_1& s1 = *a1_p++;
s1.aa = s2.hh;
s1.bb = s2.bb;
s1.cc = s2.cc;
s1.dd = s2.ii;
s1.ee = s2.jj;
// Any members not set will remain the same
}
相关文章:
- 从函数中全局删除并重新实例化数组结构,而无需在编译时知道数组的大小
- 如何使用函数的输出初始化 const 数组结构字段?
- 传递数组结构、ofstream 和 interger 以运行
- 从文本文件中读取并输入到数组结构中,然后显示读取的数据C++
- 将文本文件读取到数组结构中
- C/C++中数组结构和数组结构的通用接口
- C++ MDC final-在字符类型的数组结构中按字母顺序对记录中的名称进行排序
- C++ 使用数组结构创建平衡的二叉搜索树
- C++:释放动态数组(结构成员)和指向此结构的指针的方法
- 使用 vector 在 c++ 中声明 3D 数组结构
- 数组结构无法正确打印
- 如何在C++中访问数组结构内部的数组结构
- CIN进入数组结构似乎什么也没输入
- ifstream将数组结构到txt文件中,然后尽可能将其提取为数组
- wlanapi-将WlanFreeMemory释放其WLAN_INTERFACE_INFO数组结构
- 显示数组结构 c++
- C++ 使用函数访问数组结构的方法是什么?
- 将庞大的数组结构复制到 GPU
- 如何封送包含字符矩阵的数组结构
- C++多维数组结构的对齐