я есть 2d вектор для моего HashtableРеализация префикса оператора
std::vector<std::vector<std::string> > htable;
и класса для итератора.
class myiterator{
public:
myiterator();
myiterator(std::vector<std::vector<std::string> >& v, int ii, int jj) :
vec(v), i(ii), j(jj) {}
myiterator& operator++(); // prefix operator
myiterator& operator--(); // prefix operator
std::string* operator->();
private:
std::vector<std::vector<std::string> >& vec; // the vector we are iterating over
int i; // the position in the vector (first dimension)
int j; // the position in the vector (second dimension)
};
myiterator begin() {
int start=0;
while(htable[start].size()==0){
start++;
}
return (myiterator(htable, start, 0));
}
myiterator end(){
int end=htable.size()-1;
while(htable[end].size()==0){
end--;
}
return (myiterator(htable, end, htable[end].size()-1));
}
Я реализовал начало и конец итератора, но я понятия не имею, как и что делать с оператором приставкой. Кроме того, я не мог google, какой оператор «->» есть? Итак, пожалуйста, можете ли вы дать мне небольшой трюк или статью об истребителях префиксов реализации для векторов 2d? Заранее спасибо.
Вот как вы overloasd пре-/постфикса операторы в C++: http://stackoverflow.com/questions/894804/how-to-differentiate-when-overloading-between-prefix- and-postfix-forms-of-oper – LumpN