私は2次元ベクトルで実現するハッシュテーブルを持っています
std::vector<std::vector<std::string> > htable;
また、ハッシュ テーブルのサブクラスである myiterator クラスに ++、-、および * 演算子を記述しました。
class myiterator{
public:
myiterator();
myiterator(std::vector<std::vector<std::string> >& v, int ii, int jj) :
vec(v), i(ii), j(jj) {}
std::string operator*(){
return vec[i][j];
}
myiterator& operator++(){
if(j==vec[i].size()-1){
int start=0;
while(vec[start].size()==0){
start++;
}
i=start;
j=0;
}
else{
j++;
}
return *this;
}
// myiterator operator++(int); // postfix operator
myiterator& operator--(){
if(j==0){
int end=vec[i].size()-1;
while(vec[end].size()==0){
end--;
}
i=end;
j=vec[end].size()-1;
}
else{
j--;
}
return *this;
} // prefix operator
// myiterator operator--(int); // postfix 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));
}
問題は、-> 演算子をどのように実装する必要があるかということです。そして、彼は何をしますか?ググったけどわからなかった。私の質問が初心者で基本的なものである場合は申し訳ありません。前もって感謝します。