我正在尝试在C ++的哈希表程序中打印列表对向量的元素。 如果我使用C ++ 11 auto它正在工作,但如果我使用迭代器
for (vector<int>::iterator i = arr_Hash[i].begin(); i != arr_Hash[i].end(); ++i)
//for (auto index = arr_Hash[i].begin(); index != arr_Hash[i].end(); index++)
{
cout << i->second;
cout << " ";
}
错误列表:https://i.imgur.com/rDejBGG.png
我如何在这里使用迭代器?
答案 0 :(得分:2)
vector<int>::iterator i = arr_Hash[i].begin()
您在这里重用变量i
。称之为别的。
std::cout << i->second;
i
是std::vector<int>::iterator
。取消引用它会为您提供int&
,其中没有second
成员。您可能只想要std::cout << *i;
答案 1 :(得分:0)
arr_Hash[i]
的迭代器需要与向量的类型相同。
即,如果arr_Hash[i]
的类型为vector<pair<int,int>>
,那么它的迭代器必须为vector<pair<int,int>>::iterator
。
然后,你应该Prefer a range-for-statement to a for-statement when there is a choice。
for (auto& e : arr_Hash[i])
cout << i->second << " ";