為了測試幾種常用的原生多維陣列管理方法,我們利用gnu c++ 7.2 最新的msys2版本,進行乙個測試:
主要測試涵蓋指標型的二維陣列、vector\array\map
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//gnu c++ 7.2
//鏈結選項: -wl,--stack,20240000
using
namespace
std;
const
int testlooptimes = 1000;
const
int d1 = 80;
const
int d2 = 60;
const
int d3 = 40;
const
int d4 = 20;
//用於進行迴圈賦值測試的函式
template
double function_loop(t p, int ntimes)
//用於測試含有構造、析構的函式
void test(function ftest)
//vector 測試
double function_vector()
//array 測試
double function_array()
; printf ("test array:\n");
double loopcost = function_loop(p,testlooptimes);
return loopcost;
}//map 測試
double function_map()
//unordered_map 測試
double function_unordered_map()
//shared_ptr 測試
#if __gnuc__>= 7
double function_shared_ptr()
#endif
//pointer測試
double function_pointer()}}
double loopcost = function_loop(p,testlooptimes);
for (h=0; hfor (i=0; ifor (j=0; jdelete p[h][i][j];
}delete p[h][i];
}delete p[h];
}delete p;
return loopcost;
}int main()
輸出結果如下:
test vector:
loop cost: 1.594000 (s)
mem cost: 0.046000 (s)
test array:
loop cost: 1.204000 (s)
mem cost: 0.000000 (s)
test pointer:
loop cost: 1.500000 (s)
mem cost: 0.015000 (s)
test map:
loop cost: 156.454000 (s)
mem cost: 0.563000 (s)
test unordered_map:
loop cost: 83.639000 (s)
mem cost: 0.609000 (s)
test shared_ptr:
loop cost: 1.219000 (s)
mem cost: 0.015000 (s)
可見,使用 shared_ptr 還是很划算的!用array、vector也不賴! js多維陣列變一維的幾種方法
var arr 1 2,3 4,5 var newarr concat.arr var arr 1 2,3,4 5 6 var newarr arr.join split 解釋 利用join將陣列中所有元素放入乙個字串,再用split分割。缺點 數字型別變成字串型別 var arr 1 2,3,4 ...
使用c 進行多維陣列遍歷的方法
主要介紹四種遍歷多維陣列的方法 第一種 使用最原始的,二維遍歷的方式,這種情況下,陣列下標運算子的索引值的型別是size t。int arr 3 5 第一種遍歷方式 最原始的下標方式 const size t row 3 const size t col 5 for size t i 0 i for...
c 建立二維陣列的幾種方法
1 用new申請一塊記憶體空間存放二維陣列 includeusing namespace std int main int argc,char argv int n 10,m 2 int swp 動態申請二維陣列 n行 m列 swp new int n for int i 0 i2 用變數定義二維陣...