C++ Tutorial/list/list iterator — различия между версиями
Admin (обсуждение | вклад) м (1 версия: Импорт контента...) |
|
(нет различий)
|
Текущая версия на 13:29, 25 мая 2010
Содержание
iterator of list integers
<source lang="cpp">#include <iostream>
- include <list>
using namespace std;
int main() {
list<int> lst; int i; for(i=0; i<10; i++) lst.push_back(i); cout << "Size = " << lst.size() << endl; list<int>::iterator p = lst.begin(); while(p != lst.end()) { cout << *p << endl; p++; } p = lst.begin(); while(p != lst.end()) { *p = *p + 100; p++; } p = lst.begin(); while(p != lst.end()) { cout << *p << " "; p++; } return 0;
}</source>
List iterator for certain type list
<source lang="cpp">#include <iostream>
- include <list>
using namespace std; typedef list<int> LISTINT; int main(void)
{ LISTINT listOne; LISTINT::iterator i; listOne.push_front (2); listOne.push_front (1); listOne.push_back (3); for (i = listOne.begin(); i != listOne.end(); ++i) cout << *i << " "; cout << endl; for (i = listOne.end(); i != listOne.begin(); --i) cout << *i << " "; cout << endl; }</source>
Loop through list back and forth
<source lang="cpp">/* The following code example is taken from the book
* "The C++ Standard Library - A Tutorial and Reference" * by Nicolai M. Josuttis, Addison-Wesley, 1999 * * (C) Copyright Nicolai M. Josuttis 1999. * Permission to copy, use, modify, sell and distribute this software * is granted provided this copyright notice appears in all copies. * This software is provided "as is" without express or implied * warranty, and with no claim as to its suitability for any purpose. */
- include <iostream>
- include <list>
- include <algorithm>
using namespace std; void print (int elem) {
cout << elem << " ";
} int main() {
list<int> coll; // insert elements from 1 to 9 for (int i=1; i<=9; ++i) { coll.push_back(i); } // print all elements in normal order for_each (coll.begin(), coll.end(), // range print); // operation cout << endl; // print all elements in reverse order for_each (coll.rbegin(), coll.rend(), // range print); // operations cout << endl;
}</source>
1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1
Move list iterator using ++
<source lang="cpp">#include <iostream>
- include <cassert>
- include <list>
- include <algorithm> // for find
using namespace std; int main() {
char x[5] = {"a", "r", "e", "q", "t"}; list<char> list1(&x[0], &x[5]); // Search for the first occurrence of the letter e: list<char>::iterator where = find(list1.begin(), list1.end(), "e"); list<char>::iterator next = where; ++next; cout << *next << endl; return 0;
}</source>
q
Use iterator to change all elements in a list
<source lang="cpp">#include <iostream>
- include <list>
using namespace std; int main() {
list<int> lst; // create an empty list int i; for(i=0; i<10; i++) lst.push_back(i); cout << "Size = " << lst.size() << endl; cout << "Contents: "; list<int>::iterator p = lst.begin(); while(p != lst.end()) { cout << *p << " "; p++; } cout << "\n\n"; // change contents of list p = lst.begin(); while(p != lst.end()) { *p = *p + 100; p++; } cout << "Contents modified: "; p = lst.begin(); while(p != lst.end()) { cout << *p << " "; p++; } return 0;
}</source>
Size = 10 Contents: 0 1 2 3 4 5 6 7 8 9 Contents modified: 100 101 102 103 104 105 106 107 108 109
Use iterator to loop through all elements in a list
<source lang="cpp">#include <iostream>
- include <list>
using namespace std; int main() {
list<int> lst; // create an empty list int i; for(i=0; i<10; i++) lst.push_back(i); cout << "Size = " << lst.size() << endl; cout << "Contents: "; list<int>::iterator p = lst.begin(); while(p != lst.end()) { cout << *p << " "; p++; } cout << "\n\n"; return 0;
}</source>
Size = 10 Contents: 0 1 2 3 4 5 6 7 8 9
Use reverse_iterator and iterator with list
<source lang="cpp">/* The following code example is taken from the book
* "The C++ Standard Library - A Tutorial and Reference" * by Nicolai M. Josuttis, Addison-Wesley, 1999 * * (C) Copyright Nicolai M. Josuttis 1999. * Permission to copy, use, modify, sell and distribute this software * is granted provided this copyright notice appears in all copies. * This software is provided "as is" without express or implied * warranty, and with no claim as to its suitability for any purpose. */
- include <iostream>
- include <list>
- include <algorithm>
using namespace std; int main() {
list<int> coll; // insert elements from 1 to 9 for (int i=1; i<=9; ++i) { coll.push_back(i); } // find position of element with value 5 list<int>::iterator pos; pos = find (coll.begin(), coll.end(), // range 5); // value // print value of the element cout << "pos: " << *pos << endl; // convert iterator to reverse iterator list<int>::reverse_iterator rpos(pos); // print value of the element to which the reverse iterator refers cout << "rpos: " << *rpos << endl; // convert reverse iterator back to normal iterator list<int>::iterator rrpos; rrpos = rpos.base(); // print value of the element to which the normal iterator refers cout << "rrpos: " << *rrpos << endl;
}</source>
pos: 5 rpos: 4 rrpos: 5