是否可以在C ++中使用qsort或std :: sort对2D数组进行排序,以便当从每行的左向右或每列的从上至下读取元素时,它们的顺序是递增的?
例如,
13, 14, 15, 16
1, 4, 3, 2
7, 5, 7, 6
9, 10, 11, 12
成为:
{ 1, 2, 3, 4 }
{ 5, 6, 7, 8 }
{ 9, 10, 11, 12 }
{ 13, 14, 15, 16 }
我知道您可以通过创建两个比较函数,然后首先对每一行进行排序,然后对每一行的第一个元素进行比较以建立列来做到这一点,但是有没有办法在一个函数本身中做到这一点?
是。C ++ STL库是通过算法和容器的分离构建的。将它们链接在一起的是迭代器。原始指针是迭代器,因此可以使用原始指针初始化向量,然后照常对向量进行排序。
std::vector<int> v(arr2d, arr2d + N); // create a vector based on pointers
// This assumes array is contiguous range
// in memory, N=number of elemnts in arr2d
// using default comparison (operator <):
std::sort (v.begin(), v.end());
// cout by 4 elements in a row
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句