C++ std::迭代器何时以及如何使用value_type、引用、指针
C++ when and how are std::iterator value_type, reference, pointer used?
我正在为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 >
…
相关文章:
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 为什么static_assert错误:即使我传递常量"expression must have a constant value"?
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 控制到达非空函数clang(-Wreturn-type)的末尾
- 为什么我会" void value not ignored as it ought to be"?
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- 方法错误"not all control paths return a value"和方法不返回值
- 将系数存储在头文件的数组中("does not name a type"错误)
- 尝试打开 ifstream 时出现"Incomplete type"错误
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 在"结构提升::enable_if<提升::is_pod<T>,无效>"中没有名为"type"的类型
- 如何修复" State Error (active) E0513 a value of type "const wchar_t *" cannot be assigned to an entity o
- "a value of type " void (exeCallback::*)(int) " cannot be assigned to an entity of type " void (*)(
- cmake -D <var>:<type>=<value> 参数"-D"是什么意思
- 没有用于初始化'value type'的匹配构造函数
- new(size, value) Type[0]返回的指针是否合法,是否可以用来构建数组?