“什么=是什么意思?,c++"/>

首页 > 解决方案 > “模板“什么=是什么意思?

问题描述

当我看到 stl 源代码时,我看到一些代码,我无法理解?

template <class _Tp, class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
class vector : protected _Vector_base<_Tp, _Alloc> 
{
  // requirements:

  __STL_CLASS_REQUIRES(_Tp, _Assignable);
  ....
}

所以,问题是=in 是什么意思template <class _Tp, class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >

=我可以像使用关键字一样理解吗:

using _Alloc = class __STL_DEFAULT_ALLOCATOR(_Tp)

标签: c++

解决方案


=指示默认模板参数。

例如

template <class Foo = std::string>
class Bar

意思是“std::string如果没有提供参数就使用。你可以这样使用Bar

Bar b;

这将等于

Bar<std::string> b;

在你的情况下,

template <class _Tp, class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
class vector

方法

默认情况下,__STL_DEFAULT_ALLOCATOR(_TP)如果没有指定其他内容,则使用

允许你写

vector<int> v;

而不必写

vector<int, __STL_DEFAULT_ALLOCATOR(int)> v;

这将更加冗长。


有关更多详细信息,请参阅此答案


推荐阅读