c++ - 如何在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++ 中分配数组。这是使用数组是一个坏主意的众多原因之一。
你有四个合理的选择
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];
推荐阅读
- node.js - Showdown 不会在 html 块内解析
- android - 将数据从作为生命周期观察者的类传递给 Activity
- android - 如何在kotlin中将值传递给分页DataSourcec
- python - 在Python中查找单词的频率和按降序排列的频率
- javascript - 按名称选择元素的值
- javascript - 仅当从 xmlhttp 调用接收到数据时,如何运行函数?
- python - 无法将 .egg 文件添加到 scrapyd addversion.json
- azure - 如何将 Azure Eventhub 主连接密钥和辅助连接密钥作为 ARM 模板输出返回?
- python - 为什么 numpy.corrcoef() 返回 nan?
- java - 在java 8中拆分字符串并将值设置为类变量