我正在为STL和Boost不在桌面的环境编写容器和迭代器的集合。我在处理容器时遇到了一些困难,例如Vector,它可以包含值类型和指针类型,当涉及到处理迭代器及其返回类型时 - 例如通过GetValue函数。想要支持const迭代器更加复杂。我见过here关于一系列特征的定义:value_type,reference,pointer。我的问题是如何在创建迭代器的上下文中使用它们?基本上,鉴于我想要
Object & Vector<Object>::Iterator::GetValue()
Object * Vector<Object*>::Iterator::GetValue()
const Object & Vector<Object>::ConstIterator::GetValue()
const Object * Vector<Object*>::ConstIterator::GetValue()
value_type,reference,pointer factor如何进入此?
答案 0 :(得分:1)
迭代器的成员类型不是很常用。幸运的是,您不需要费心去定义它们。 std::iterator
基类为您完成。
template< typename value_type >
struct my_vector_iterator
: std::iterator< std::random_access_iterator_tag, value_type >
…
template< typename value_type >
struct my_vector_const_iterator
: std::iterator< std::random_access_iterator_tag, value_type const >
…