对无零值的多维向量进行排序

Sort multidimensional vectors without null values

本文关键字:向量 排序      更新时间:2023-10-16
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行As呈0,0和0,0,以及在排序时如何忽略这些值?<<?/p>

如果您只想对填充的部分进行排序,请使用

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

您是否会更具体地说明您想实现的目标?排序时,您可以提供自己的比较操作员

 template <class RandomAccessIterator, class Compare>
  void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );

有关更多信息,请阅读手册http://www.cplusplus.com/reference/algorithm/sort/

嗯,它们不是零值。它们是0,这是一个非常有效的数字。如果您只想要2行,只需添加两个行。只需执行int n = 2而不是4

有了您提供的信息,您当然可以这样做:

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

这只会对前两个行进行排序。

c 中的 int从来都不是 NULL。如果您执行以下操作:

int val = (int)NULL;

val的值是0,它与任何其他值为0int无法区分。如果您真的会在要忽略的多维向量中有那些NULL"孔",我建议使用Nullable<int>