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

C++ when and how are std::iterator value_type, reference, pointer used?

本文关键字:value type 引用 指针 何使用 迭代器 std 何时 C++      更新时间:2023-10-16

我正在为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 >
    …
相关文章: