c++ - 如何对动态分配的对象数组中的空对象进行排序,以便空对象位于数组的后面 C++

标签 c++ arrays sorting

我有一个动态分配的对象数组。一些数组由对象填充,但其他部分为空。当我使用冒泡排序对数组中的对象进行排序时,它排序正确,但为空的数组部分位于填充的数组部分的前面。有没有办法将空对象推到数组的后面而不是前面?

阵列中发生的事情的图片:

| null | null | null | object | object |

我希望数组看起来像的图片:

| object| object | null | null | null |

这是我的冒泡排序代码:

::bubbleSort()
{
  bool flag = true;
  obj temp;
  int j = 0;

  while(flag)
  {
    flag = false;
    j++;

    for(int i = 0; i < (max - j); i++)
    {
      if(arr[i] > arr[i + 1])
      {
        temp = arr[i];
        arr[i]= arr[i+1];
        arr[i+1] = temp;
        flag = true;
      } 
    }
  }
}

这是我如何定义我的 arr:

private:
obj *arr;

然后在我的构造函数中

max = 25
arr = new obj[max];

最佳答案

您要找的函数可能是std::partition ,如果你想要的只是在后面有空值。如果您还需要对其他值进行排序,std::sort是正确的选择。两者都允许您定义一个定义排序或分区顺序的比较,允许您自定义元素的排序方式。

关于c++ - 如何对动态分配的对象数组中的空对象进行排序,以便空对象位于数组的后面 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36369514/

相关文章:

c++生成带有O和X的二维数组

c++ - 我们可以使用 std::vector 定义一个固定宽度的二维矩阵吗?

C++:如何在头文件中包含 Paillier.h

java - Android 中的数组编辑

Linux排序多个文件——排序: multi-character tab `$\\u0001'

c++ - 为什么通过流获取的 std::string 被覆盖?

javascript - 检查数组中是否存在函数

无法在 C 中创建大型结构数组

c - 如何从 C 中的二维数组中删除一行?

algorithm - 最好的连续排序算法?