C++ Tutorial/STL Algorithms Iterator/iterator — различия между версиями
Admin (обсуждение | вклад) м (1 версия: Импорт контента...) |
|
(нет различий)
|
Текущая версия на 13:29, 25 мая 2010
Содержание
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. */
- 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); } 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;
}</source>
1 4 3
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. */
- include <iostream>
- include <vector>
- 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;
}</source>
pos: 5 rpos: 4
Find a value in map by key
<source lang="cpp">#include <iostream>
- 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;
}</source>
Its ASCII value is 71
iterator template
<source lang="cpp">#include <vector>
- include <iterator>
- include <iostream>
using std::vector; using std::cout; using std::endl; template <typename IteratorType> void iteratorTraitsTest(IteratorType it) {
typename std::iterator_traits<IteratorType>::value_type temp; temp = *it; cout << temp << endl;
} int main(int argc, char** argv) {
vector<int> v; v.push_back(5); iteratorTraitsTest(v.begin()); return (0);
}</source>