2012-12-18 50 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>