Re: [問題] 如何進行 struct 之複製?

看板C_and_CPP (C/C++)作者 (迅雷不及掩耳盜鈴)時間16年前 (2010/05/16 01:41), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串2/2 (看更多)
首先BOOL與bool是不同的東西, 以下假設你用的BOOL. 有沒有更快的? 想不出來. 除非你這樣宣告: BOOL x1[x1_len] 那就有搞頭了 // dest是目標, src是來源 void ChromDeepClone(chrom* dest, const chrom* src) { // 假設長度相同 assert(dest->x1_len == src->x1_len); assert(dest->x2_len == src->x2_len); dest->fitness = src->fitness; memcpy(dest->x1, src->x1, sizeof(BOOL) * dest->x1_len); memcpy(dest->x2, src->x2, sizeof(BOOL) * dest->x2_len); } ※ 引述《tropical72 (藍影)》之銘言: : 遇到的問題: (題意請描述清楚) : 我自定義一個struct , 內容大概如下 : typedef struct chrom{ : BOOL *x1; : BOOL *x2; : UINT x1_len; : UINT x2_len; : double fitness; : }; : 同時程式會進行幾個特殊動作 : chrom *parent, *pool, *child; : parent = (chrom*)malloc(sizeof(chrom)*parent_cnt); // pool, child 同理 : for(UINT i=0; i<parent_cnt; i++){ : parent[i].x1 = (bool*)malloc(sizeof(bool)*x1_len); : parent[i].x2 = (bool*)malloc(sizeof(bool)*x2_len); : } // pool, child 同理 : 問題1: : 若我要將 parent 之所有值都丟到 pool 裡面去 : 除了使用2個 for loop 一個一個 assign 之外, 是否有更快的方法?? : 如欲使用 memcpy 之方式, 請問 size 那裡該如何表示?? : 問題2 : 若設 chrom best; : 而 best 只是複製 parent 其中的一個, : 試問 memcpy 之方式是否會簡單些?? : 謝謝各位的細心回覆, 感激不盡!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.147.174

05/16 22:14, , 1F
謝謝 f 大細心指教. 發文時的確忘了前後 bool 一致問題
05/16 22:14, 1F

05/16 22:15, , 2F
另,x1使用 x1=(bool*)malloc(sizeof(bool)*x1_len);
05/16 22:15, 2F

05/16 22:16, , 3F
(因為x1的長度可能會隨執行次數而變..)
05/16 22:16, 3F

05/16 22:16, , 4F
故才提此問題,但還是謝謝您的細心解說,非常感謝
05/16 22:16, 4F
文章代碼(AID): #1BxjonrP (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BxjonrP (C_and_CPP)