Печать векторных элементов с помощью итератора - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь напечатать элементы вектора пары списков в программе хэш-таблиц на 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 голосов
/ 25 мая 2018

Итератор для arr_Hash[i] должен быть того же типа, что и вектор.

А именно, если тип arr_Hash[i] равен vector<pair<int,int>>, то его итератор должен быть vector<pair<int,int>>::iterator.

Hoverver, вы должны отдавать предпочтение диапазону для оператора для оператора, когда есть выбор .

for (auto& e : arr_Hash[i])
    cout << i->second << " ";
0 голосов
/ 25 мая 2018

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

Вы повторно используете переменную i здесь.Назовите это как-нибудь еще.

std::cout << i->second;

i - это std::vector<int>::iterator.Разыменование дает вам int&, в котором нет члена second.Вы, вероятно, просто хотите std::cout << *i;

...