藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 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個字節以上
這主要看看你的數據變動是多大來確定再分配的大小



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com