我有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;
}
}
答案 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。