利用STL解決二維陣列過大記憶體溢位問題

2021-10-07 08:54:17 字數 447 閱讀 5435

前幾天寫乙個程式,記憶體空間不夠用,要開二維陣列一直報錯,後來查閱了一些資料總結了幾種方法,在這裡記錄分享一下

1. 如果你的程式沒有記憶體限制,那你可以把陣列定義在主函式外,用這個辦法的話,陣列最大可以定義到大概

test[10720][100000]這麼大
2.如果程式有記憶體限制可以用vector容器代替陣列,當然vector是不可能真正的代替二維陣列的,使用vector會削去很大一部分功能

3.下面這個我覺得比較好用限制又小的是map容器代替陣列

舉個栗子

test[12][13] = num;

我們可以用乙個maptest_map這樣的容器,把map[1213] = num;

這樣只要你的二維陣列個數大小在整型範圍內就可以使用map容器,或者更進一步,你需要更大的陣列,可以考慮把 』1213『轉換成字串的形式,然後用maptest_map儲存陣列

二維陣列動態分配記憶體

在robert sedgewick所著的algorithm in c中,把二維陣列當成陣列的陣列為它動態分配記憶體。首先,分配乙個指標的陣列,然後為每一行分配記憶體。函式定義 void malloc2d int r,int c,int size void free2d void arr,int r ...

二維陣列 記憶體布局與指標

有兩種直觀的方式來定義二維陣列,可以理解成直接定義和間接定義 直接定義 char ch 2 3 間接定義 typedef char p 3 p ch 2 間接定義首先把char 3 當成一種型別 一維陣列 並給這個型別起了個別名p,然後定義了乙個p的陣列,換言之,間接定義將二維陣列理解成了若干個一維...

二維陣列動態分配記憶體

對二維陣列分配動態空間 1.已知二維陣列的行 第一維 include include 已知陣列的行數 列數由終端輸入 int main void int i,j,num int a 3 已知陣列有3行 printf 請輸入二位陣列的列數 n scanf d num 列數由終端輸入 for i 0 i...