上下文:
operator []
返回子数组的包装。
由于容器需要迭代器,我目前正在该容器上实现迭代器,两者
Container::iterator
和
Container::const_iterator
前向迭代器
...
如果
a
和
b
a == b
如果且仅当
*a
和
*b
不尊重它的原因是
operator *
必须返回对子容器的引用。所以我的实现是
包含随迭代器移动的子容器成员,并且
操作员*
返回对此成员对象的引用
template <class T>
class SubArray {
T *arr;
size_t *sizes;
size rowsize;
public:
...
Iterator<T> begin() {
return Iterator<T>(operator[](0));
}
...
};
class Iterator<T> {
SubArray elt;
public:
Iterator(const SubArray<T>& pos): elt(pos) {}
...
SubArray<T>& operator *() {
return elt;
...
};
根据cppreference(和不同实现的源)
std::filesystem::path::iterator
也是一个隐藏迭代器。
这个
iterator_category
迭代器的成员应该帮助其他类识别迭代器的类型,从输入迭代器到随机访问。应该是什么
在我的隐藏迭代器中,它几乎满足了随机访问迭代器的所有需求,但是对于一个转发迭代器点却失败了?注:这足以使
std::reverse_iterator
不能用在上面。
备注:
std::filesystem::path::迭代器
包含用于Clang实现的:
typedef bidirectional_iterator_tag iterator_category;
同时也是预防
std::reverve_iterator
参考文献: