迭代器
除了vector之外,还有好几种容器
但是只有string和vector常用下标访问
引入了用来代替下标访问 - 迭代器访问
string不属于容器,但是也可以使用迭代器
指针:取地址 ,指向地址
迭代器:返回成员 ,指向数据
begin运算符和end运算符
begin成员:负责返回首元素 迭代器
end成员:负责返回尾位置的下一位置元素 迭代器
如果容器为空,则begin和end返回的迭代器,都是尾后迭代器
注意点:begin()和end()返回的一定是个迭代器
,要进行后续操作需要用一个迭代器变量把当前迭代器保留下来,再进行迭代器运算
#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操作
迭代器运算
迭代器指向下一元素经典错误:
// 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);
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。