Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;何时以及如何使用std::迭代器值、类型、引用和指针?_C++_Templates_Pointers_Reference_Iterator - Fatal编程技术网

C++ C++;何时以及如何使用std::迭代器值、类型、引用和指针?

C++ C++;何时以及如何使用std::迭代器值、类型、引用和指针?,c++,templates,pointers,reference,iterator,C++,Templates,Pointers,Reference,Iterator,我正在为STL和Boost不存在的环境编写一个容器和迭代器集合。在处理迭代器及其返回类型时,我正在努力处理容器,例如向量,它可以包含值类型和指针类型,例如通过GetValue函数。由于需要支持常量迭代器,它变得更加复杂。我已经了解了一系列特征的定义:值类型、引用、指针。我的问题是如何在创建迭代器的上下文中使用这些工具?基本上,考虑到我想要 Object & Vector<Object>::Iterator::GetValue() Object * Vector<Obje

我正在为STL和Boost不存在的环境编写一个容器和迭代器集合。在处理迭代器及其返回类型时,我正在努力处理容器,例如向量,它可以包含值类型和指针类型,例如通过GetValue函数。由于需要支持常量迭代器,它变得更加复杂。我已经了解了一系列特征的定义:值类型、引用、指针。我的问题是如何在创建迭代器的上下文中使用这些工具?基本上,考虑到我想要

Object & Vector<Object>::Iterator::GetValue()
Object * Vector<Object*>::Iterator::GetValue() 
const Object & Vector<Object>::ConstIterator::GetValue()
const Object * Vector<Object*>::ConstIterator::GetValue()
对象和向量::迭代器::GetValue() Object*Vector::Iterator::GetValue() 常量对象和向量::conditerator::GetValue() 常量对象*向量::conditerator::GetValue()
值类型、引用、指针是如何考虑到这一点的?

迭代器的成员类型不太常用。幸运的是,您不需要费心定义它们。基类为您执行此操作

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 >
    …
模板
结构我的向量迭代器
:std::迭代器
…
模板<类型名称值\u类型>
结构my_vector_const_迭代器
:std::iterator
您是否尝试查看了
std::vector
的功能?提示:
std::vector::pointer
int**
@Potatoswatter是的,很明显std::vector::pointer是**。我的问题涉及如何在为迭代器的返回类型创建正确的签名的上下文中使用它们。正如我所提到的,STL在这种情况下对我不可用,但感谢您指出发生了什么。在这些情况下,“value_type”只是T或T*,如果容器包含指向T类型的指针?@Steven是的,就是这么简单。如果容器包含指针,它的实现将涉及指向指针的指针,但永远不会直接指向类型?