Re: [問題] 如何進行 struct 之複製?
首先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
05/16 22:14, 1F
→
05/16 22:15, , 2F
05/16 22:15, 2F
→
05/16 22:16, , 3F
05/16 22:16, 3F
→
05/16 22:16, , 4F
05/16 22:16, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章