2013-11-25 3 views
-1

Я хотел бы спросить, является ли это правильной реализацией оператора const iterator ++ (int)?Filtered const_iterator operator ++ (int)

const_iterator operator++(int) { 
    const_iterator previous(pointer,end,filter); 
    while(pointer!=end_){ 
     pointer++; 
     if(filter(*pointer)) return previous; 
    } 
     return const_iterator(end,end,filter); 
} 

pointer- указатель на текущий элемент, КОНЕЦ указатель на конец, и фильтр-функции фильтра

+0

Если вы думаете, на самом деле видеть определение классов итераторов будет по-крайней мере, минимально полезным, вы не могли бы быть более правильно. – WhozCraig

ответ

2

Вы должны вернуть previous достигают ли вы или нет конца.

Это может иметь смысл реализовать это в терминах преинкремента:

const_iterator previous(*this); 
++(*this); 
return previous; 
Смежные вопросы