gpt4 book ai didi

c++ - 使用默认谓词对模板进行排序。 C++

转载 作者:行者123 更新时间:2023-11-30 03:13:00 28 4
gpt4 key购买 nike

我正在尝试定义类模板,如下所示

template <typename T> class test{
std::list<T> container;
public:
template <typename type, typename PRED = std::greater<int>>
void push(type e, PRED comp = std::greater<int>) {
container.push_back(e);
container.sort(comp);
}

};

我希望能够从 main 中告诉 sort 应该如何进行排序。但如果未指定任何内容,我也希望 sort 使用 std::greater 。上面的代码告诉我 std::greater 是非法的。

最佳答案

你可能想这样做:

template <typename type, typename PRED = std::greater<T>>
void push(type e, PRED comp = PRED()) {
// ...
}

使用 std::greater<T>作为默认的模板参数,这样即使在 T 时它也能工作不是 int .

使用 PRED()作为 comp 的默认值参数,这样即使用户指定了一些其他默认可构造的谓词类型,它也能工作,比如 std::less<T> .

关于c++ - 使用默认谓词对模板进行排序。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59077684/

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