Original Post
i have written a small program to test the performence of different methods for assigning elements of std::vector. ( environment: amd 3000+, vc++ 8.0, windows xp), below is the code patch //////////////////////////////////////////////////// int count = 100; int size = 100000; vector v1, v2, v3; //case 1 sw1.Start(); //stopwatch for performence for(int i = 0; i < count ; i++) { for(int j = 0; j < size; j++) v1.push_back(j); } sw1.Stop(); cout<<sw1.GetTime()<<endl; //case 2 sw2.Start(); for(int i = 0; i < count ; i++) { v2.resize((i+1) * size); memcpy(&v2[i*size], t, sizeof(int)*size); } sw2.Stop(); cout<<sw2.GetTime()<<endl; //case 3 sw3.Start(); int k = 0; for(int i = 0; i < count ; i++) { v2.resize((i+1) * size); for(int j = 0; j < size; j++) v2[k++] = t[j]; } sw3.Stop(); cout<<sw3.GetTime()<<endl; //case 4 sw4.Start(); for(int i = 0; i < count ; i++) { v3.reserve((i+1) * size); for(int j = 0; j < size; j++) v3.push_back(j); } sw4.Stop(); cout<<sw4.GetTime()<<endl; ======================================================= the result is: (s) case1: 0.238482 case2: 0.312511 case3: 0.087241 case4: 4.76303 What suprised me most is that case 2 is so slow compared with case3, memcpy 's performence is worse than "for " loop ! anybody can explain this ? Thanks