C++ Primer注解 - 迭代器(iterator)

尾调棱镜
• 阅读 1788

迭代器

除了vector之外,还有好几种容器
但是只有string和vector常用下标访问
引入了用来代替下标访问 - 迭代器访问

string不属于容器,但是也可以使用迭代器

指针:取地址 ,指向地址
迭代器:返回成员 ,指向数据

begin运算符和end运算符

begin成员:负责返回首元素 迭代器
end成员:负责返回尾位置的下一位置元素 迭代器
如果容器为空,则begin和end返回的迭代器,都是尾后迭代器

注意点:begin()和end()返回的一定是个迭代器,要进行后续操作需要用一个迭代器变量把当前迭代器保留下来,再进行迭代器运算
C++ Primer注解 - 迭代器(iterator)

#include<bits/stdc++.h>
#include<vector>
#include<typeinfo>
using namespace std;
int main()
{    int array[]={10,20,30,40,50};
    int* pointer = array; //= &array[0]
    vector<int> A={10,20,30,40,50};
 
    cout<<"*pointer="<<*pointer<<endl;
    auto iter = A.begin(); 
    
    cout<<"vector.begin() ="<<(*iter); 
 } 
常见错误
// cout<<A.begin();<<endl; 初学者错误,迭代器返回的是迭代器
// (*A).begin(); 概念混淆,应该是对迭代器解引用,而不是对A数组解引用后再进行begin操作

迭代器运算

C++ Primer注解 - 迭代器(iterator)

迭代器指向下一元素经典错误:
// cout<<"vectoer second number ="<<*(iter++); 错误写法
必须是++iter !!!
#include<bits/stdc++.h>
#include<vector>
#include<typeinfo>
using namespace std;
int main()
{    
    vector<int> A={10,20,30,40,50};
    auto iter = A.begin(); 
    cout<<"vector first number="<<*iter<<endl; 
    cout<<"vector second number ="<<*(++iter); 
 } 
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
STL 容器和迭代器连载1_简介
/文件名:STL_con_ite_1.cpp开发人员:袁培荣当前版本:1.0.0.2595创建时间:20120520
Stella981 Stella981
4年前
Python三大神器之迭代器详解
我们将要来学习python的重要概念迭代和迭代器,通过简单实用的例子如列表迭代器和xrange。可迭代一个对象,物理或者虚拟存储的序列。list,tuple,strins,dicttionary,set以及生成器对象都是可迭代的,整型数是不可迭代的。如果你不确定哪个可迭代哪个不可以,你需要用python内建的iter()来帮忙。
Stella981 Stella981
4年前
Python3 迭代器与生成器
点击上方Z先生点记,加为星标第一时间收到Python技术干货!转自:Python那些事迭代器迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方
Stella981 Stella981
4年前
C++ 之获取map元素[转]
链接:https://www.cnblogs.com/jianfeifeng/p/11089799.html  对于map对象,count成员返回值只能是0或者1,map容器只允许一个键对应一个实例。所以count可有效地表明一个键是否存在。count返回出现的次数。  find返回指向元素的迭代器,如果元素不存在,则返回end迭代器。 
Wesley13 Wesley13
4年前
7、【C++ STL】适配器
1、基本概念适配器,在STL中扮演着转换器的角色,本质上是一种设计模式,用于将一种接口转换成另一种接口,从而是原本不兼容的接口能够很好地一起运作。适配器不提供迭代器。2、基本类型根据目标接口的类型,适配器可分为以下几类:(1)改变容器的接口,称为容器适配器;(2)改变迭代器的接口,称为迭代器适配器;
Wesley13 Wesley13
4年前
C++:模板类
22.模板类22.1模板类模板是泛型编程的基础,那什么是泛型编程呢?泛型编程是一种独立于任何特定数据类型编写代码的方式。C标准模板库中的数据容器、迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。比如动态数组vector是可以存放任何类型数据的容器,我们可以定义许多不同类型的vector,比如vector<int或vect
Stella981 Stella981
4年前
Php5.5新特性 Generators详解
在PHP5.5.0版本中,新增了生成器\(Generators)_特性,用于简化实现迭代器接口_(Iterator)\创建简单的迭代器的复杂性。通过生成器,我们可以轻松的使用foreach迭代一系列的数据,而不需要事先在内存中构建要被迭代的对象,大大减少了内存开销。当生成器函数被调用的时候,它会返回一个可迭代的对象,当对该对象进行迭代
Stella981 Stella981
4年前
Python 迭代器与生成器
python迭代器与生成器说到python迭代器,首先要明确两个概念:Iterable和Iterator,这两个概念还有Generator都是定义在collections模块里的。Iterable意为“可迭代的(对象)”,包括如下两种:1、实现了__getitem__(self,
Stella981 Stella981
4年前
OpenCV访问像素点
三种方法迭代器创建一个Mat::Iterator对象it,通过itMat::begin()来的到迭代首地址,递增迭代器知道itMat::end()结束迭代;while(it!Scr.end<Vec3b()){//(it)00;//蓝色通道置零;
小万哥 小万哥
2年前
Java 包装类:原始数据类型与迭代器
JavaIteratorIterator接口提供了一种迭代集合的方法,即顺序访问集合中的每个元素。它支持hasNext()和next()方法,用于检查是否存在下一个元素以及获取下一个元素。获取Iterator可以使用集合的iterator()方法获取Ite
小万哥 小万哥
1年前
NumPy 数组迭代与合并详解
NumPy数组迭代NumPy数组迭代是访问和处理数组元素的重要方法。它允许您逐个或成组地遍历数组元素。基本迭代我们可以使用Python的基本for循环来迭代NumPy数组。一维数组迭代:pythonimportnumpyasnparrnp.array(1
尾调棱镜
尾调棱镜
Lv1
撩乱边愁听不尽,高高秋月照长城。
文章
8
粉丝
0
获赞
0