我使用数据结构,并且对这些数据结构进行了很多排序。这些数据结构持有指向对象的指针,而不是直接指向对象本身。现在我可以编写一个简单的比较函子或函数来告诉排序算法如何对指针进行排序:
struct Object_ptr_comparer {
bool operator()(const Object* first, const Object* second) {
return *first < *second;
}
};
并使用例如std::sort
:
Object_ptr_comparer comp;
std::sort(data_str.begin(), data_str.end(), comp);
这个解决方案的唯一问题是我必须为任何类型的类编写额外的指针比较器仿函数。是的,我可以使用继承和多态性来只编写某个根类的比较器,但我不想这样做。有没有其他聪明的方法来做到这一点?