gpt4 book ai didi

c++ - 为什么 std::stack 不使用模板模板参数?

转载 作者:IT老高 更新时间:2023-10-28 12:32:49 26 4
gpt4 key购买 nike

为什么 std::stackstd::queue 对其底层容器类型使用类型模板参数而不是模板模板参数?

即为什么 stack 是这样声明的:

template<typename T, typename Container = deque<T>>
class stack;

但不是这样:

template<typename T, template<typename> class Container = deque>
class stack;

?

最佳答案

因为通常像 std::vector have more than one template argument 这样的容器.通过不关心它是模板,您可以使用各种容器。

会怎样

template<class T, class Allocator = std::allocator<T>> class vector;

适合

template<typename> class Container

就像您在 stack 中一样? (提示:它没有!)对于您想要支持的每种数量和种类的模板参数(类型与非类型),您都需要特殊情况,这很愚蠢,因为这些通常不会提供任何帮助比简单的更多信息

typename Container

请注意,要获取实际的模板参数,例如一个 std::vector,你有 typedefs std::vector::value_typestd::vector::allocator_type,不需要让这些类型在你实际使用类型的地方显式可用(即 stackContainer)。

关于c++ - 为什么 std::stack 不使用模板模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38721618/

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