学习笔记-C++ STL iterator与对指针的理解-20170618

时间:2023-03-09 05:55:32
学习笔记-C++ STL iterator与对指针的理解-20170618

vector的itrerator支持random access

 #include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>intVector;
intVector.push_back();
intVector.push_back();
intVector.push_back();
intVector.push_back();
intVector.push_back();
intVector.push_back(); vector<int>::iterator p1 = intVector.begin();
for (; p1 != intVector.end(); p1++)
{
cout << *p1 <<" " <<&p1<<endl;
}
//cout <<endl<< "the last" << *p1 << endl; // vector iterator is not dereferencable
cout <<endl<< &p1 <<endl;
cout << *(--p1) << " "<<&p1<<endl;// cout << *(p1 - ) <<" "<<&p1<< endl;
cout << p1[-] << " "<<&p1<<endl;
cout << *p1 << " " << &p1<< endl;
*p1 = ;
cout << *p1 << " " << &p1 << endl;
for (; p1 != intVector.end(); p1++)
{
cout << *p1 << " " << &p1 << endl;
}
cout << endl << endl;
for (p1=intVector.begin(); p1 != intVector.end(); p1++)
{
cout << *p1 << " " << &p1 << endl;
}
cin.get();
return ;
}

输出:

10 00FEFCF4
20 00FEFCF4
30 00FEFCF4
40 00FEFCF4
50 00FEFCF4
60 00FEFCF4

00FEFCF4
60  00FEFCF4
30 00FEFCF4
30 00FEFCF4
60  00FEFCF4
1234 00FEFCF4
1234 00FEFCF4

10 00FEFCF4
20 00FEFCF4
30 00FEFCF4
40 00FEFCF4
50 00FEFCF4
1234 00FEFCF4

PS:①当iterator指向容器中最后一个元素后面一个位置时(空),无法解引用

②iterator相当于指针,对iterator进行++或--时,iterator指向的位置前移或后移,但是iterator本身的地址是不变的,和指针一样