如何在C ++中将一个结构数组的值复制到另一个结构数组

时间:2019-01-22 19:17:59

标签: c++

我有2种不同的结构。我想将obj [i] .process的值复制到n_obj [i + 1] .n_process,但是代码块显示无效的数组分配。但是代码:

struct object{
char process[10];
int burst_time;
double l;
};

struct n_object{
char n_process[10];
int n_burst_time;
};

int main(){
object obj[100];
n_object n_obj[100];
int n,a,count_g=0,count_l=0,q_t,sum=0,tot_t=0,wait_t=0,g_c[100],t_t[100],w_t[100];
double l;

for(int i=0;i<=n;i++){
    if(q_t>obj[i].burst_time){
        sum=sum+obj[i].burst_time;
        n_obj[i+1].n_burst_time=sum;
        n_obj[i+1].n_process=obj[i].process;
    }
    else if(q_t<obj[i].burst_time){
        a=obj[i].burst_time-q_t;
        sum=q_t+sum;
        n_obj[i+1].n_burst_time=sum;
        n_obj[i+1].n_process=obj[i].process;
    }
}

2 个答案:

答案 0 :(得分:2)

您不能在C ++中分配数组。使用数组不是一个好主意是许多原因之一。

您有四个合理的选择

1)使用std::array

#include <array>

struct object{
    std::array<char, 10> process;
    int burst_time;
    double l;
};

n_object相同,现在将编译您的代码。 std::array的工作方式与常规数组非常相似,但可以分配(除其他优点外)。

2)使用std::copy

复制元素
#include <algorithm>

std::copy(obj[i].process, obj[i].process + 10, n_obj[i+1].n_process);

3)使用memcpy

复制元素
#include <cstring>

memcpy(n_obj[i+1].n_process, obj[i].process, 10*sizeof(char));

4)编写循环并逐个复制元素

for (size_t j = 0; j < 10; ++j)
    n_obj[i+1].n_process[j] = obj[i].process[j];

答案 1 :(得分:-2)

您在这里有一个豆荚。您可以在阵列上使用memcpy。