Re: Итератор для vector<vector<T> >
От: LightGreen  
Дата: 12.01.14 12:31
Оценка:
Составляя пример кода выше, я пропустил ещё одну переменную класса it1end_, без которой нельзя в operator++() определить наступление условия isEnd_. Хотя тогда можно попробовать обойтись без isEnd_ и применять такой оператор сравнения:
[ccode]
bool operator=(iterator it) const {
return it1_==it.it1_ && (it1_==it1end_ || it2_==it.it2_);
}
Тем не менее, при этом в итераторе по-прежнему нужно хранить четыре переменные и большинство сравнений в цикле for() для объединённого контейнера будет состоять из трёх сравнений. Что намного хуже с вычислительной точки зрения, чем реализация в виде вложенных циклов, где в таком случае нужно всего одно сравнение.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.