學習筆記-C++ STL iterator與對指針的理解-20170618


vector的itrerator支持random access

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 int main()
 5 {
 6     vector<int>intVector;
 7     intVector.push_back(10);
 8     intVector.push_back(20);
 9     intVector.push_back(30);
10     intVector.push_back(40);
11     intVector.push_back(50);
12     intVector.push_back(60);
13 
14     vector<int>::iterator p1 = intVector.begin();
15     for (; p1 != intVector.end(); p1++)
16     {
17         cout << *p1 <<" " <<&p1<<endl;
18     }
19     //cout <<endl<< "the last" << *p1 << endl; //  vector iterator is not dereferencable 
20     cout <<endl<< &p1 <<endl;
21     cout  << *(--p1) << "  "<<&p1<<endl;//60
22 
23     cout << *(p1 - 3) <<" "<<&p1<< endl;
24     cout << p1[-3] << " "<<&p1<<endl;
25     cout << *p1 << "  " << &p1<< endl;
26     *p1 = 1234;
27     cout << *p1 << " " << &p1 << endl;
28     for (; p1 != intVector.end(); p1++)
29     {
30         cout << *p1 << " " << &p1 << endl;
31     }
32     cout << endl << endl;
33     for (p1=intVector.begin(); p1 != intVector.end(); p1++)
34     {
35         cout << *p1 << " " << &p1 << endl;
36     }
37     cin.get();
38     return 0;
39 }

輸出:

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本身的地址是不變的,和指針一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM