【发布时间】:2025-12-25 12:30:11
【问题描述】:
我正在为不支持 STL 和 Boost 的环境编写容器和迭代器的集合。在处理迭代器及其返回类型时——例如,通过 GetValue 函数,我在处理可以包含值类型和指针类型的容器(例如 Vector)方面有些挣扎。由于想要支持 const 迭代器,情况变得更加复杂。我看过here关于一系列traits的定义: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 是如何影响这个的?
【问题讨论】:
-
您是否尝试查看
std::vector的作用?提示:std::vector<int *>::pointer是int **。 -
@Potatoswatter 是的,很明显 std::vector
::pointer 是**。我的问题与如何在为迭代器的返回类型创建正确签名的上下文中使用这些有关。
标签: c++ templates pointers reference iterator