要在C++中实现一个开放的哈希表,我想我会定义一个包含指向包含数据的向量的指针的向量.为简单起见,假设我想要一个可以存储ints 的哈希表.我以为我需要一个vector< vector<int>* >.
结果数据结构可能如下所示:
[指数0] 8,6,2
[索引1](空)
[指数2] 9,12,15,28,1
我本可以创建一个静态的vector<int>指针数组,但我希望能够随着时间的推移添加更多的索引.
要写出元素,我想做这样的事情:
for (unsigned int i = 0; i < myHashtable.size(); i++) {
cout << "[index " << i << "]";
for (unsigned int j = 0; j < myHashtable[i]->size(); j++) {
cout << " " << *(myHashtable[i])[j];
}
cout << "\n";
}
Run Code Online (Sandbox Code Playgroud)
此代码无法编译.什么是正确的解决方法*(myHashtable[i])[j]?
(*myHashtable[i])[j]
Run Code Online (Sandbox Code Playgroud)
下标operator([])比dereference ()绑定得更紧密*(参见http://www.cppreference.com/wiki/operator_precedence).因此,您需要使用括号强制绑定.
顺便说一句,你可以这样写内循环:
for (vector<int>::iterator it = myHashtable[i]->begin();
it != myHashtable[i]->end(); ++it)
{
cout << " " << *it;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
276 次 |
| 最近记录: |