gpt4 book ai didi

c++ - 模板集合的不同排序方法

转载 作者:行者123 更新时间:2023-11-28 05:19:55 25 4
gpt4 key购买 nike

很抱歉,如果这个论坛上已经存在类似的问题,如果可以的话,请给我链接。

我有一个模板类

template<typename type>
class DoublyLinkedList {};

我想在其中包含 Sort 方法。

template<typename type>
class DoublyLinkedList
{
public:

void Sort(){}

};

但是列表是模板,所以它可以包含不同的类型。那么我如何为我预见的所有类型创建方法呢?我这样试过:

template<typename type>
class DoublyLinkedList
{
public:

void DoublyLinkedList<int>::Sort(){}
void DoublyLinkedList<string>::Sort(){}

};

但这是错误的。请帮忙。

最佳答案

标准库一般处理这个问题的方式是让用户指定自己的比较函数。您可以添加一个模板化参数,您的类型的用户可以使用该参数来提供比较功能,例如 std::sort做。在排序的实现中,您假设 comparer 是一个比较列表的两个元素并返回第一个元素是否应该在第二个元素之前的函数。

#include <string>
template<typename type>
class DoublyLinkedList
{
public:
template<class Comp>
void Sort(Comp comparer);

};

void foo(DoublyLinkedList<std::string> & list)
{
// Sort list by length of strings
list.Sort([](const std::string p_left, const std::string p_right){
return p_left.size() < p_right.size();
});
}

关于c++ - 模板集合的不同排序方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41724506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com