通过指向基类的数组对成员数据进行排序

时间:2014-05-28 01:29:50

标签: c++ sorting bubble-sort

我有一个基类(即笔记本电脑),其中包含四个私有会员数据和一些公共成员函数另一方面,三个派生类(即Apple,Sony和IBM)没有任何其他成员数据或功能。简而言之,我使用异构列表指向基类,我需要对派生类的特定成员数据(即cpuPower)之一进行排序(冒泡排序)调用虚函数基类的GetcpuPower。我的问题是如何更改数组中对象的顺序以对它们进行排序? 如上所述,排序算法是冒泡排序,其中一种方法是使用辅助函数交换来改变元素的升序或降序。 ,我不知道如何在这个特定的例子中进行交换。

1 个答案:

答案 0 :(得分:0)

您没有显示任何代码,并且您对使用的容器不明确,但您可能想要这样的内容:

#include <vector> // Or whatever container you're using
#include <algorithm> // Or whatever swap function you're using

std::vector<Laptop*> foo;

// ...

// A single bubble sort pass:

for (int i = 0; i < foo.size() - 1; i++)
{
   // Modify if you want to change the sort order:
   if (foo[i]->GetcpuPower() > foo[i + 1]->GetcpuPower())
   {
      std::swap(foo[i], foo[i + 1]);
   }
}

// rest of bubble sort code