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如何在排序时忽略这些值? / p>
答案 0 :(得分:2)
如果您只想对已填充的部分进行排序,请使用
sort(sort_arrsort_arr.begin(), sort_arrsort_arr.begin()+2);
答案 1 :(得分:0)
你想要实现的目标能否更具体一点?排序时可以提供自己的比较运算符
template <class RandomAccessIterator, class Compare>
void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
有关详细信息,请阅读手册 http://www.cplusplus.com/reference/algorithm/sort/
答案 2 :(得分:0)
他们不是空值。它们是0,这是一个完全有效的数字排序。如果您只想要2行,则只需添加两行。只需int n = 2
代替4
。
根据您提供的信息,您当然可以这样做:
sort(sort_arr.begin(), std::next(sort_arr.begin(),2));
这只会对前两行进行排序。
答案 3 :(得分:0)
C ++中的int
永远不会NULL
。如果您执行以下操作:
int val = (int)NULL;
val
的值为0
,与价值为int
的任何其他0
无法区分。如果您想要忽略多维向量中的NULL
个“洞”,我建议您使用Nullable<int>
。