這已經困擾了我一會。很多時候,我發現自己做了一個大緩衝區來保存「最大」的數據量。這有助於避免每次下一個數據集的大小發生變化時動態分配和釋放緩衝區。訪問一維數組作爲2D陣列中的C++
例如說我有一個數組,是其實際有用的尺寸的方式過大,但我知道有用數據的長度。
int amountOfData = 9;
char data1D[100] = some data that is only 9 bytes long stored in a 100 byte array
可以說我有一個算法我想對使用二維數組索引這個數據集運行。所以,我希望能夠訪問數據如下:
cout << "I am accessing this data as a 2D array: " << data1D[0][1] << endl;
比方說這個算法我知道,二維數組的xlength和ylength將是:
int xlength = 3;
int ylength = 3;
此迭代,因爲amountOfData = 9
。但是,下一次迭代的長度可能會有所不同。 IE瀏覽器。他們可能是xlength = 4
和ylength = 4
給出amountOfData = 16
。
我想要做一些鑄造的,讓我投用二維數組索引的一維數組。我知道我的初始1D長度有多長,這說明我的2D xlength
和ylength
有多長,所以如果不使用new
或malloc
,這應該很容易實現,只要最初的100個字節足夠長以容納任何有用的數據集對我來說。
我意識到:
char** data2d = (char**) data1D;
不會起作用,因爲編譯器不知道第二個維度的尺寸。但是我會在運行時知道它是什麼!
,這是什麼是它的方式是根本原因是什麼? 是否有任何解決方法? 我錯過了什麼嗎?
查看[矢量](http://en.cppreference.com/w/cpp/container/vector)。 –
您期望在data1D中使用哪種類型? – Amadeus
@Tomas Badan我用'char's作爲例子,但是今天出現了這個問題的一個特例,當時我想訪問'unsigned char'的一維數組作爲'unsigned short'的二維數組。一維陣列吐出專有相機軟件。我想以二維像素數據的形式訪問生成的圖像。 – dinkelk