用迭代器打印矢量元素

时间:2018-05-25 18:48:04

标签: c++ c++11 iterator stdvector

我正在尝试在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

我如何在这里使用迭代器?

2 个答案:

答案 0 :(得分:2)

vector<int>::iterator i = arr_Hash[i].begin()

您在这里重用变量i。称之为别的。

std::cout << i->second;

istd::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 << " ";