我是邁克爾(最初的作者)現在有ID La-AIDA
首先,謝謝大家,Boost &融合凡新對我來說。
去Éric: 一個錯字:v [1]應該有N_1條目,v [2] N_2等等。 我想STL類的東西,而不是C數組(缺乏邊界檢查,沒有選擇添加它)。
對愛立克的新評論: 我試過你的解決方案,它立即就可以工作(幾乎可以在刪除虛擬查詢之後)! 謝謝! 但是:我需要這樣的東西
for (i = 1;i < 30;i++) {
cout << s.At<i>[0] << endl;
}
也就是說,對於在<指數..>應變量(即整點,以能夠運行的索引,而不是治療分別30硬編碼的東西)
但GCC與錯誤抱怨:「I」中不能出現一個常數表達式
關於「在Java中」: AfaIk,Java中的二元矩陣不是一些 int v [10] [10]; 固定尺寸,但類似於 int [] [] v; 其中首先有一個
v = new int[10][];
(或類似的語法),然後,這是點:
v[0] = new int[1];
...
v[9] = new a[10];
這使得三角矩陣,或當然你喜歡的任何形式。 事實上,一個10乘10的矩陣也需要1加10個新的矩陣。
關於結構本身: 的等效數據結構將是
vector<int> v1;
vector<pair<int,int>> v2;
vector<int,int,int> v3;
...
vector<int[29]> v29;
然而其中我們將必須單獨處理各30份。
我想能夠說v[5][3][123] = 99;
設置第3部分在123五元組99個,沒有定義
vector<int> v[30][30];
它會做的伎倆,但浪費了巨大的空間,因爲 從未使用過v[1][2..30][0..\infty] or more generally v[i][i+1..30][*]
。因此,在我的問題中,我有一個int的列表,其中有三對的三元組...,它們都是可排序的int元組的30個元組,這些元素都可以排序等等,而不會浪費空間。
你試圖實際使用STL std :: vector類,還是這個本地C++數組? – qid 2009-11-16 14:48:07
不知道我理解這個問題。你的意思是像'組<假人,矢量,矢量,...,矢量'(或者,如果N_0,...,N29是常數:'組<空,INT [N_0],INT [2 ] [N_1],...,int [29] [N_29]')? –
2009-11-16 19:30:13
這個問題的標題顯示「...和Java一樣」:也許解釋你如何用Java來做這件事可以幫助我們理解。 – 2009-11-16 19:32:23