我知道如何在曲面级别上使用迭代器,但我试图了解迭代器与容器类(如vector )之间的关系。
根据why do we put :: (scope resoulation operator) before iterator?
std::vector是std命名空间中的类模板,它使std::vector<double>成为一个类。
std::vector<T>::iterator是std::vector<T>下的嵌套类型。
据我所知,类模板vector有一个类型为iterator的成员,该成员来自#include <iterator>中的类模板。
这令人困惑,因为当我查看http://www.cplusplus.com/reference/iterator/iterator/时,在#include <iterator>中没有const_iterator类模板可以看到吗?
发布于 2019-12-13 03:55:44
从评论中收集到的信息:
在不推荐
std::iterator之前,#include <iterator>的C++17std::iterator模板类来实现迭代器。例如,vector:在std::vector规范中,没有任何东西说vector::iterator或vector::const_iterator与std::iterator有任何特殊的关系(甚至在std::iterator废除之前的标准中也是如此)。此外,虽然iterator和const_iterator是在vector范围内声明的类型,但并不要求vector有一种类型的成员-- iterator和const_iterator都是std::vector接口的一部分,例如,成员begin()的重载会返回这些类型,但是对于这些函数如何获得返回f 224的迭代器没有说明什么。
在STL容器中需要和不需要的
“返回迭代器(或满足迭代器需求的原始指针)的开始函数和结束函数。没有任何东西表明迭代器需要在容器中实现。”。
iterator、const_iterator等),通常对某些迭代器类别(如LegacyRandomAccessIterator )使用类型别名,后者定义为“指向数组元素的指针满足的所有要求https://stackoverflow.com/questions/59262424
复制相似问题