首页 > 解决方案 > 如何在c ++中将一个结构数组的值复制到另一个结构数组

问题描述

我有两种不同的结构。我想将obj[i].process的值复制到n_obj[i+1].n_process,但是codeblocks说无效的数组赋值。但是代码:

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;
    }
}

标签: c++

解决方案


您不能在 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];

推荐阅读