Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Нахождение середины вектора средствами итераторов


Автор: fear 18.2.2008, 11:33
В книге Липпама "Язык программирования С++ вводный курс" приводится пример нахождения середины вектора:
Код
  std::vector<int> vi;
  std::vector<int>::iterator mid = (vi.begin() + vi.size())/2;

Код
error C2676: binary '/' : 'std::_Vector_iterator<_Ty,_Alloc>' does not define this operator or a conversion to a type acceptable to the predefined operator
        with
        [
            _Ty=int,
            _Alloc=std::allocator<int>
        ]


Оператор деления не определён в классе итератора, это что значит? Автор привёл ошибочный код?

Автор: Fazil6 18.2.2008, 11:49
Код

std::vector<int> vi;
std::vector<int>::iterator mid = vi.begin() + std::distance(vi.begin() , vi.end())/2;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)