【发布时间】:2021-02-13 20:16:55
【问题描述】:
我尝试为自定义容器实现与 std 兼容的自定义迭代器的复制构造函数。 容器看起来像这样:
template <typename T, Alloc>
class container {
template <typename ValueType>
class raw_iterator;
...
using value_type = T;
...
using iterator = raw_iterator<value_type>
using const_iterator = raw_iterator<const value_type>
...
}
raw_iterator 看起来像这样:
template <typename T, Alloc>
template <typename ValueType>
class container<T, Alloc>::raw_iterator {
...
}
如果我是对的,我必须为迭代器和 const_iterator 都实现一个复制构造函数,以便可以将迭代器复制到相同的类型,并且可以将普通迭代器复制到 const_iterator。
如何实现?
PS:我必须在复制构造函数中提供一些功能,所以我不能使用隐式生成的构造函数。
【问题讨论】:
-
您可以为
const_iterator创建一个隐式构造函数,它以iterator作为参数。然后一切都会“正常工作”。 -
正如我所说,我需要在复制构造函数中添加一些逻辑,而不仅仅是自动生成的。除此之外,我将如何在其中一个模板特殊化上添加这样的构造函数?
-
好,我举个例子。
标签: c++ iterator containers std