zoukankan      html  css  js  c++  java
  • C++之迭代器与指针

    转载:https://www.cnblogs.com/weew12/p/10583057.html

    STL 迭代器

    最简单的迭代器是指针

    给定一个指向数组中的第一个元素的指针,可递增该指针使其指向下一 个元素,还可直接对当前位置的元素进行操作。

    STL 中的迭代器是模板类,从某种程度上说,它们是泛型指针

    这些模板类让程序员能够对 STL 容器进行操作。

    注意:

    操作也可以是以模板函数的方式提供的 STL 算法,迭代器是一座桥梁,让这些模板函数能够以一致而无缝的方式处理容器,而容器是模板类。

    迭代器不是指针,是类模板,表现的像指针。

    迭代器只是模拟了指针的一些功能,通过重载了指针的一些操作符,->,*,++ --等封装了指针,是一个“可遍历STL容器内全部或部分元素”的对象, 本质是封装了原生指针,是指针概念的一种提升,提供了比指针更高级的行为,相当于一种智能指针,可以根据不同类型的数据结构来实现不同的++,--等操作;
    迭代器返回的是对象引用而不是对象的值,所以cout只能输出迭代器使用*取值后的值而不能直接输出其自身。

     注:迭代器在使用后就释放了,不能再继续使用,但是指针可以


    指针:


    指针能指向函数而迭代器不行,迭代器只能指向容器;

    指针是迭代器的一种。指针只能用于某些特定的容器;迭代器是指针的抽象和泛化。所以,指针满足迭代器的一切要求。

     


    一个是类模板,一个是存放地址的指针变量。

  • 相关阅读:
    new和malloc的区别
    C++中的数据类型强制转换方法
    C++中pair和make_pair的区别
    PlantUML 图绘制类库--VSCODE插件
    Exception: HOUR_OF_DAY: 0 -> 1的问题
    Fiddler手机抓包工具如何设置过滤域名
    MySQL 正则表达式 REGEXP
    ASP.NET Web API 2 中的属性路由
    windows服务搭建(VS2019创建Windows服务不显示安装组件)
    JWT的验证(转载)
  • 原文地址:https://www.cnblogs.com/abtious/p/13729543.html
Copyright © 2011-2022 走看看