c++ - std::transform 将一个结构数组复制到另一个

标签 c++ c++11 c++14

我有以下结构。

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? 我不想在这里 memcpy,因为如果将来任何结构的类型发生变化,那么它会导致问题。

我可以在这种情况下使用 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};
});

关于c++ - std::transform 将一个结构数组复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62217395/

相关文章:

c++ - 原始类型的强 typedef (BOOST_STRONG_TYPEDEF 不会削减它)

c++ - 无法调用 getter 方法

c++ - 我的 vector 获得了一个额外的索引,即使我不希望它这样做

c++ - sso 是否用于 std::string 以外的任何其他标准库容器?

c++ - 删除标准库映射

c++ - 线程池C++实现问题

c++ - CRT虚拟析构函数

c++ - 迭代器和标量对象之间的未定义行为有什么区别吗?

c++ - 有没有办法在对象上保持弱引用并控制它的生命周期?

c++ - 数组-遍历辅助数组