C++ std::迭代器何时以及如何使用value_type、引用、指针



我正在为STL和Boost不在桌面上的环境编写容器和迭代器的集合。在处理迭代器及其返回类型(例如通过 GetValue 函数)时,我在处理容器(例如 Vector)时有些挣扎,这些容器可以同时包含值类型和指针类型。由于想要支持常量迭代器,它变得更加复杂。我在这里看到了一系列特征的定义:value_type、引用、指针。我的问题是如何在创建迭代器的上下文中使用它们?本质上,鉴于我想要

Object & Vector<Object>::Iterator::GetValue()
Object * Vector<Object*>::Iterator::GetValue() 
const Object & Vector<Object>::ConstIterator::GetValue()
const Object * Vector<Object*>::ConstIterator::GetValue()

value_type、参考、指针如何影响这一点?

迭代器的成员类型使用不多。幸运的是,您无需费心定义它们。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 >
    …

相关内容

  • 没有找到相关文章

最新更新