|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
c語言裡好像沒有動態數組這一說吧,那麼......
怎麼做才能做出動態數組的效果呢?
同志? |
c語言裡好像沒有動態數組這一說吧,那麼......
我認為作為一種數據結構數組就不應當有動態的,如果要動態的就只能用其他的數據結構了,比如鏈表 |
c語言裡好像沒有動態數組這一說吧,那麼......
可以用指針,用void *realloc(void *ptr, size_t size);重新分配。 |
c語言裡好像沒有動態數組這一說吧,那麼......
同意二樓的,用list吧
下面這個是我想得出來安全的用法了,還要動態分配的話,大概還是應該用list
void test(int array_len)
{
int *pInt= new int[array_len];
for (int i=0;i<array_len;i++){
pInt[i] = i; //其實是個指針,模擬數組
}
delete [] pInt;
pInt = 0;
} |
c語言裡好像沒有動態數組這一說吧,那麼......
如果用C++的話,可以用vector |
c語言裡好像沒有動態數組這一說吧,那麼......
便是要
考慮性能
如果不考慮性能的話
使用鏈表可以
鏈表對隨機訪問的效率很是低
所以不如使用C++
一般用vector
如果數組可能很大的話(有2M以上)
那麼使用deque(性能比vector低) |
c語言裡好像沒有動態數組這一說吧,那麼......
嗯,另外數據量很大,頻繁new,delete ->;list,會在內存中產生大量的碎片.
另外問一下,如果想樓主問的只是用C語言的話, 除了數組和鏈表, 是否還有其他的折中方法? 謝了! |
c語言裡好像沒有動態數組這一說吧,那麼......
那可以使用vector的實現方法
vector是一次分配比較多的空間作為數組使用
然後當空間快不夠時再次分配
並把舊值memcpy到新空間
好像是一次分配2048個字節以上
這主要看看你的數據變動是多大來確定再分配的大小 |
c語言裡好像沒有動態數組這一說吧,那麼......
那可以使用vector的實現方法
vector是一次分配比較多的空間作為數組使用
然後當空間快不夠時再次分配
並把舊值memcpy到新空間
然後就可以把它當成是固定數組使用了
好像是一次分配2048個字節以上
這主要看看你的數據變動是多大來確定再分配的大小 |
| |