解决矢量指针向量内的矢量

Pie*_*ter 3 c++ vector

要在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]

Oli*_*rth 7

(*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)