44:40 reverse_iterator::base возвращает обычный итератор не "на тоже самое", а на следующий элемент (в порядке до реверса). Т.е. v.rbegin().base() == v.end(). Иначе например не очень понятно что должен вернуть итератор rend().base() - итератор на элемент "до первого" звучит стремно, а v.rend().base() == v.begin() выглядит ок.
@bloodyink34232 жыл бұрын
Да не, там прикол, из-за которого к словам Илюхи можно докопаться. Мы в реверс итер отдаём какой-то итератор = underlying, им инициализируется реверс итер. Далее при разыменовании реверс итера у нас возвращается разыменованный previous от underlying. Там есть соотношение: *reverse_it == *(underlying - 1). Ну и *reverse_it(i)base() == i
@johnnygray67552 жыл бұрын
такой подход к написанию const_iterator не сработает для operator=, когда мы можем приравнять iter=const_iter, а наоборот ( const_iter = iter) нет
@stupnum876410 ай бұрын
вы имеете ввиду перегрузку оператора = как члена? я переписал +- также как тут, и у меня не в ту, не в другую сторону не работает, можно только константый к константному и неконст к неконст
@siarheimarozau67632 жыл бұрын
Готовиться к лекциям надо более тщательно! код под main выполняется без реализации back_insert_iterator. #include #include //#include //#include /* template struct back_insert_iterator { private: Container& container; public: back_insert_iterator& operator ++() { return *this; } back_insert_iterator& operator *() { return *this; } typename Container::value_type& operator =(const typename Container::value_type& value) { container.push_back(value); return container.back(); } }; */ int main() { std::vector v(10); std::vector vv; std::cout