gpt4 book ai didi

c++ - 具有可变类型容器的类模板

转载 作者:太空狗 更新时间:2023-10-29 20:52:50 25 4
gpt4 key购买 nike

我想知道是否可以创建一个类模板,其中包含一个必须是容器但由用户指定的类型的对象。

例如,现在我有这样一个类:

template<class T>
class Myclass {
std::queue<T> queue;

// SOME OTHER MEMBERS
}

但我希望能够在需要时使该 std::queue 对象成为某种其他类型的容器,例如 std:stack,以便还能够处理具有 FIFO 以外的其他类型策略的容器。

这可能吗?或者是否有任何其他解决方案不涉及我创建另一个与此完全相同但使用 stack 而不是 queue 的类?

最佳答案

当然可以。这称为容器适配器。 std::queue 本身是一个容器适配器,看起来像

template<class T, class Container = std::deque<T>> 
class queue
{
//...
};

虽然这样做需要你使用类似的东西

std::queue<int, std::vector<int>> foo;

如果要换容器。如果您不想指定容器的模板类型,那么您可以使用类似

template<class T, template<typename...> class Container = std::queue> 
class Myclass
{
Container<T> cont;
};

你可以像这样使用它

Myclass<int, std::set> foo;

将其更改为使用 std::set 而不是默认的 std::queue

关于c++ - 具有可变类型容器的类模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44572705/

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