C++/STL Algorithms Iterator/iterator

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Advance the iterator

<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.
*/
  1. include <iostream>
  2. include <list>
  3. 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);
   }
   list<int>::iterator pos = coll.begin();
   // print actual element
   cout << *pos << endl;
   // step three elements forward
   advance (pos, 3);
   // print actual element
   cout << *pos << endl;
   // step one element backward
   advance (pos, -1);
   // print actual element
   cout << *pos << endl;

} /* 1 4 3

*/        
 </source>


Convert iterator to reverse iterator

<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.
*/
  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; int main() {

   vector<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
   vector<int>::iterator pos;
   pos = find (coll.begin(), coll.end(),
               5);
   // print value to which iterator pos refers
   cout << "pos:  " << *pos << endl;
   // convert iterator to reverse iterator rpos
   vector<int>::reverse_iterator rpos(pos);
   // print value to which reverse iterator rpos refers
   cout << "rpos: " << *rpos << endl;

} /* pos: 5 rpos: 4

*/        
 </source>


Find a value in map by key

<source lang="cpp">

  1. include <iostream>
  2. include <map>

using namespace std; int main() {

 map<char, int> m;
 // put pairs into map
 for(int i=0; i<26; i++) {
   m.insert(pair<char, int>("A"+i, 65+i));
 }
 char ch = "G";
 map<char, int>::iterator p;
 
 // find value given key
 p = m.find(ch);
 if(p != m.end()) 
   cout << "Its ASCII value is  " << p->second;
 else
   cout << "Key not in map.\n";
 return 0;

} /* Its ASCII value is 71

*/        
 </source>