gpt4 book ai didi

c++ - 为什么要在 C++ 标准容器中为模板参数起别名?

转载 作者:行者123 更新时间:2023-12-01 14:35:09 27 4
gpt4 key购买 nike

查看 Microsoft 的 STL 代码(特别是 std::vector),我遇到了以下代码行(无关代码替换为 /* ... */):

// CLASS TEMPLATE vector
template <class _Ty, class _Alloc = allocator<_Ty>>
class vector // varying size array of values
{
/* ... */
public:

/* ... */
using value_type = _Ty;
using allocator_type = _Alloc;
using pointer = typename _Alty_traits::pointer;
using const_pointer = typename _Alty_traits::const_pointer;
using reference = _Ty&;
using const_reference = const _Ty&;
using size_type = typename _Alty_traits::size_type;
using difference_type = typename _Alty_traits::difference_type;
/* ... */
};

我想知道为什么这里使用为模板类型分配类型别名的约定?

最佳答案

I was wondering why the convention of assigning a type alias to a template type is used here?

假设您有一个接受 STL 容器的模板函数(std::vectorstd::dequestd::set , std::multi_set, ...)

template <typename T>
void foo (T const & t)
{
// ...
}

并且您需要包含值的类型。

你可以在 foo() 中简单地写

 using needed_type = typename T::value_type;

这适用于 std::vectorstd::dequestd::setstd::multi_set std::arraystd::mapstd::multi_map

关于c++ - 为什么要在 C++ 标准容器中为模板参数起别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63104551/

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