首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解迭代器/const迭代器的实现

理解迭代器/const迭代器的实现
EN

Stack Overflow用户
提问于 2019-12-10 07:44:28
回答 1查看 257关注 0票数 0

我知道如何在曲面级别上使用迭代器,但我试图了解迭代器与容器类(如vector )之间的关系。

根据why do we put :: (scope resoulation operator) before iterator?

std::vector是std命名空间中的类模板,它使std::vector<double>成为一个类。

std::vector<T>::iteratorstd::vector<T>下的嵌套类型。

据我所知,类模板vector有一个类型为iterator的成员,该成员来自#include <iterator>中的类模板。

这令人困惑,因为当我查看http://www.cplusplus.com/reference/iterator/iterator/时,在#include <iterator>中没有const_iterator类模板可以看到吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-13 03:55:44

从评论中收集到的信息:

在不推荐

  • std::iterator之前,#include <iterator>的C++17
  • 就不再推荐它了,STL容器(它们是实现定义的)可以借助std::iterator模板类来实现迭代器。例如,
  • For vector

std::vector规范中,没有任何东西说vector::iteratorvector::const_iteratorstd::iterator有任何特殊的关系(甚至在std::iterator废除之前的标准中也是如此)。此外,虽然iteratorconst_iterator是在vector范围内声明的类型,但并不要求vector有一种类型的成员-- iteratorconst_iterator都是std::vector接口的一部分,例如,成员begin()的重载会返回这些类型,但是对于这些函数如何获得返回f 224的迭代器没有说明什么。

在STL容器中需要和不需要的

  • 是:

“返回迭代器(或满足迭代器需求的原始指针)的开始函数和结束函数。没有任何东西表明迭代器需要在容器中实现。”。

  • STL容器定义那些成员类型(iteratorconst_iterator等),通常对某些迭代器类别(如LegacyRandomAccessIterator )使用类型别名,后者定义为“指向数组元素的指针满足的所有要求
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59262424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档