看板 C_and_CPP 關於我們 聯絡資訊
首先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
tropical72:謝謝 f 大細心指教. 發文時的確忘了前後 bool 一致問題 05/16 22:14
tropical72:另,x1使用 x1=(bool*)malloc(sizeof(bool)*x1_len); 05/16 22:15
tropical72:(因為x1的長度可能會隨執行次數而變..) 05/16 22:16
tropical72:故才提此問題,但還是謝謝您的細心解說,非常感謝 05/16 22:16