【发布时间】:2022-01-03 19:39:30
【问题描述】:
好的,我正在尝试从 STL 重新实现 Vector 类。这是模板类的一小部分,其中包括作为参数传递的分配器的简单 typedef。
template<typename T, typename Allocator = std::allocator<T>>
class vector {
public:
typedef Allocator allocator_type;
// Other typedefs...
}
很简单,但是,我就是无法理解这个构造函数:
explicit vector(const allocator_type &alloc = allocator_type());
allocator_type() 指的是什么?是typedef吗?这是某种函数调用吗?甚至可以在这里传递用户定义的类型吗?我可能只是错过了一些东西。
【问题讨论】:
-
指的是
allocator_type的默认构造函数。vector需要一个对分配器实例的 const 引用。如果没有给出默认值allocator_type(),则使用它提供默认构造的分配器实例。 (由于唯一参数的默认值,vector的这个构造函数也提供了vector的默认构造函数。) -
@Simonechebelnome 有没有回答您的问题?