C++ 不带指针的复制结构

C++ Copy structure without pointer

本文关键字:复制 结构 指针 C++      更新时间:2023-10-16

>我想将数据结构复制到另一个

struct times{
    QString name;
    double time1;
    double time2;
    double time3;
};
/..../
times *abc = new times[10];
times *abc2 = new times[10];

如何在不复制指针的情况下将 abc 复制到 abc2 中?

std::copy(abc, abc+10, abc2);

虽然,除非你有很好的理由来处理原始指针,否则请使用更友好的容器:

std::vector<times> abc(10);
std::vector<times> abc2 = abc;  // copy-initialisation
abc2 = abc;                     // copy-assignment
for(int i = 0; i < 10; ++i)
   abc2[i] = abc[i];
或者,

或者,或者

std::copy_n(abc, 10, abc2);
或者,

您可以在结构中使用复制构造函数。

struct times{
    times(const &A) {
        this->name = A.name;
        this->time1 = A.time1;
        this->time2 = A.time2;
        this->time3 = A.time3;
    }
};

很简单,它与分配字符指针相同。

struct TestStruct
{
int a;
float c;
char b;
};
main()
{
    struct TestStruct *structa = new TestStruct;
    structa->a = 1121;
    structa->b = 'D';
    structa->c = 12.34;
    struct TestStruct *abc = structa;
    cout<<abc->a;
}