c++ - 比较模板变量的值

标签 c++ templates linked-list

我正在为一个 C++ 类编写一个链表,并且一直在试图弄清楚如何比较两个通用类型的节点以用于排序算法。在 Java 中,我将只实现 Comparable 接口(interface)并使用 compareTo() 方法来确定哪个是“更大”或“更小”,让 Collection 的用户定义它。我可以使用 C++ 中的类似内容吗?我知道我可以覆盖“<”运算符,但我不知道这是否是比较未知类型的“最佳”方法(我知道是主观的;实际上只是询问优缺点,如果还有其他方法的话)。

那么,是否有任何其他选项在运行时比较未知类型似乎比覆盖“<”运算符更合适?

编辑:更改了我需要覆盖的运算符。

最佳答案

据我所知,你有一个列表类模板,你想实现一个 sort()方法就可以了。我将遵循 std::list<T> 设置的示例为此:

template <typename T>
class List
{
public:
    // ...
    template <typename Compare>
    void sort(Compare compare) {
        // use compare(x, y) to determine if x is smaller than y
    }
    void sort() { this->sort(std::less<T>()); }
};

也就是说,您不会做出固定选择,而是默认使用 operator<()但允许用户使用不同的排序谓词。只要比较函数实现一个strict weak order什么都可以用。

关于c++ - 比较模板变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336226/

相关文章:

c++ - 如何在 boost 序列化中检索多个对象值

C++ 非类型模板参数 : Is typedef of an integral type an integral type?

c++ - 我在哪里放置第三方库来设置 C++ Linux 开发环境?

ruby-on-rails - 使用 rails 模板将行插入文件

c++ - 什么时候实例化模板类的特殊成员函数?

C - 单链表 - 按值传递指针与按引用传递指针

java - 递归大小法链表

c++ - 为什么我的 vector 不能访问嵌套结构中的变量?

c++ - 使用 ImageList 进行图像的面向对象设计

c++ - C++11 类中的多线程