OE>что-то я туплю к вечеру — есть вектор, я в нем чем-то ищу, получаю iterator it, чтоб узнать индекс элемента делаю it — vect.begin(), теперь тоже для reverse_iterator — ищу от rbegin() до rend(), получаю reverse_iterator rit — что от чего надо отнять чтоб узнать индекс элемента на который указывает rit?
OE>Я уж и так и эдак — то отрицательное значение, то левое какое-то

ЮБ>>У Мейерса в "Эффективном использвовании STL" Совет 28 стр 117 написано про base()


у него там картинка "неправильная", моя лучше



из нее по крайней мере сразу видно почему при приведении reverse_iterator к iterator при помощи base() он начинает указывать на другой элемент, на одну позицию правее.

вообщем получается так:

    for ( vector<int>::reverse_iterator  rit = vec.rbegin(); rit != vec.rend(); ++rit)
    {
        cout << "rit: index of element " << *rit 
        << " is: " << (vec.rend() - rit) - 1 << endl;
    }


inserted: 0 1 2 3 4 5
rit: index of element 5 is: 5
rit: index of element 4 is: 4
rit: index of element 3 is: 3
rit: index of element 2 is: 2
rit: index of element 1 is: 1
rit: index of element 0 is: 0
<no any citation>
Автор: Odi$$ey    Оценить