我对c ++有点新,所以这个问题可能没有任何意义,所以,提前抱歉。所以,我有一类哈希表,我的哈希表是向量的向量,这意味着我使用了
std::vector<std::vector<std::string> > htable;
我的任务是 - 使用操作 ++、--、-> 和 * 创建自己的迭代器。我写了这个
class hashTable
{
public:
hashTable(int size);
~hashTable();
void add(std::string s);
bool inHash(std::string s);
void deletestr(std::string s);
void printall();
int maxcoll();
private:
std::vector<std::vector<std::string> > htable;
std::vector<std::vector<std::string> > newhtable;
int hfunc(std::string s);
void reallocate();
int M;
int teksize;
int issame(std::string a, std::string b);
class myiterator{
myiterator();
myiterator operator*();
myiterator operator++();
myiterator operator--();
myiterator operator->();
};
myiterator begin() {return htable.begin()}
myiterator end() {return htable.end()}
};
我想,我理解 interator 是什么,但现在我想我错了,所以当我尝试编译这个时,行中有错误
myiterator begin() {return htable.begin()}
myiterator end() {return htable.end()}
/Users/ratkke/Programms/c++/mipt/tasks/#5/myhash.cpp:37:29:错误:没有从“迭代器”(又名“__wrap_iter”)到“hashTable::myiterator”的可行转换 myiterator begin() {return htable.begin()} ^~~~~~~~~~~~~~ /Users/ratkke/Programms/c++/mipt/tasks/#5/myhash.cpp:29:8: 注意:候选构造函数(隐式复制构造函数)不可行:对于第一个参数类 myiterator{
我不知道为什么。另外,你能告诉我关于向量迭代器的迭代器(或只是链接到文章)的实现,因为我不明白我必须如何实现所有这些运算符。先感谢您。