reverse iterator

Problem 1:

vector<int> coll = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

vector<int>::const_iterator pos = find (coll.cbegin(), coll.cend(),5);

cout << "pos: " << *pos << endl;

vector<int>::const_reverse_iterator rpos(pos);

cout << "rpos: " << *rpos << endl;

This program has the following output:

pos: 5

rpos: 4

Same position but its value is changed; this can use the pos in the diagram to illustrate it.

Problem 2:

deque<int> coll = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

deque<int>::const_iterator pos1;

pos1 = find (coll.cbegin(), coll.cend(), 2); // value

deque<int>::const_iterator pos2;

pos2 = find (coll.cbegin(), coll.cend(), 7); // value

for_each (pos1, pos2, print); // operation

deque<int>::const_reverse_iterator rpos1(pos1);

deque<int>::const_reverse_iterator rpos2(pos2);

for_each (rpos2, rpos1, print); // operation

The program is as follows:

2 3 4 5 6

6 5 4 3 2

It seems the behavior of the problem 2 is not same with problem 1.

This can use the pos1, pos2 in the diagram to illustrate it.

原文地址:https://www.cnblogs.com/Cmpl/p/3966886.html