【发布时间】:2020-03-11 00:56:44
【问题描述】:
我正在创建一个自定义 Vector/ArrayList 类。但是我在创建构造函数的迭代版本时遇到了麻烦。以下代码有效,但问题是当我想像这样创建 ArrayList 时:
ArrayList arr(1, 5);
编译器不知道应该选择哪个版本的函数。
我该如何解决这个问题?
构造函数:
ArrayList(const size_type elem_amount, value_type elem) : arr_size { elem_amount }, arr_capacity{ elem_amount }
{
array = std::uninitialized_fill_n(allocator.allocate(arr_size), arr_size, elem) - arr_size;
first = array;
last = array + arr_size - 1;
}
template<typename ITER>
ArrayList(ITER begin, ITER end) : arr_size{ static_cast<size_type>(end - begin) }, arr_capacity{ arr_size }
{
std::uninitialized_copy(begin, end, array = allocator.allocate(arr_size));
first = array;
last = array + arr_size - 1;
}
【问题讨论】:
标签: c++ class templates iterator