2012-12-18 85 views
0
vector<vector<int>> sort_arr; 
int n = 4, k = 2; 

sort_arrsort_arr.resize(n); 
for(int i = 0 ; i < n ; ++i){ 
sort_arrsort_arr[i].resize(k); 
} 

int sum = 16; 
for(int i = 0 ; i < 2 ; ++i){ 
    for(int j = 0 ; j < 2 ; j++){ 
    sort_arrsort_arr[i][j] = sum; 
    sum--; 
    } 
} 

sort( sort_arrsort_arr.begin(), sort_arrsort_arr.end()); 

由於向量是4x2,我只將值放在前2行,當我排序向量我得到的前2行爲0,0和0,0如何排序時我忽略這些值?排序無空值的多維向量

+0

什麼用「而排序忽略這些價值觀」呢?結果他們必須去某個地方。你的意思是把它們排序到最後?或者,你的意思是隻排序矢量的人口部分? –

+0

最後對它們進行排序。 –

回答

2

如果你只是想你填寫的部分進行排序,使用

sort(sort_arrsort_arr.begin(), sort_arrsort_arr.begin()+2); 
0

那麼他們不是空值提供自己的比較操作。他們是0,這是一個完全有效的數字來排序。如果您只需要2行,則只需添加兩行。只需做int n = 2而不是4

隨着你雖然已經給出的信息,當然你可以這樣做:

sort(sort_arr.begin(), std::next(sort_arr.begin(),2)); 

這將只有前兩個行進行排序。

0

在C++中的int從不是NULL。如果你做到以下幾點:

int val = (int)NULL; 

val值是0,這是其他任何int,其值是0沒有區別。如果你真的會在你想要忽略的多維向量中有那些「洞」,我建議使用Nullable<int>