我需要一個線性向量容器來表現得像一個多維向量容器。也就是說,一個向量如std::vector< std::vector< std::vector<int> > >
被聲明爲std::vector<int>
,但表現得好像是多維的。這要求我設置並獲取允許通過多個索引進行訪問的函數,而不僅僅是一個(即x, y, z
而不僅僅是i
)。線性多維容器
轉換不是問題(即將3D或2D索引轉換爲1D),我已經這樣做了。但是,我開始需要對幾個陣列使用相同的轉換。爲了使事情更加複雜,我需要一個線性陣列來表現如同2D,3D和4D。現在我想創建一個容器來處理內部的轉換。對於所有的意圖和目的,容器看起來像是多維的,但實際上它是一個線性陣列。
因此,首先,我不確定像boost這樣的庫是否有類似的實現。如果是這樣,請指向正確的方向。如果沒有,那麼我想創建一個供我使用,但有幾個問題。
我目前的做法是製作一個具有矢量容器的類。有一個GetVec()
函數將返回std::vector
的地址,以便我不必編寫std::vector
已有的所有函數(獲取迭代器,大小等)。
我希望用戶能夠使用從1-D到N-D的容器。訪問時,應該允許用戶傳遞可以表示一維數組或N維數組的索引。我如何確保用戶傳遞正確數量的索引(在函數參數中)?另外,初始化時,用戶應該能夠指定尺寸(可變參數列表?)。
如果這是一個不好的想法一般,請讓我知道,但有充分的理由。如果沒有,任何關於如何去實現這個類的指針將非常感謝。
只是出於好奇。你爲什麼需要那個? – zhengtonic 2011-04-17 17:58:13
我正在對大約1000萬個可以放入多維數組的元素進行計算。我希望該陣列可以連續快速訪問並避免碎片。 – Samaursa 2011-04-17 18:46:34