Выполните итерацию по вектору пар и получите доступ к первому и второму элементу - PullRequest
1 голос
/ 13 апреля 2019

Я пытаюсь перебрать вектор пар и получить доступ к первому и второму элементам.

Я не могу использовать auto, поэтому мне нужно использовать итератор.

  for (list<string>::const_iterator it = dest.begin(); it != dest.end(); ++it)
  {
    for (vector< pair < string, string > >::iterator it2 = class1.begin(); it2 = class1.end(); ++it2)
    {
      if (it == it2.first)
        cout << it2.second;
    }
  }

Я сохраняюполучение ошибок:

У меня нет имени участника первым.

Я пробовал: it2-> first, it2.first и (* it2) .first.

Почему это не работает?

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Вы пытаетесь сравнить итератор со строкой.Речь идет не только о синтаксисе разыменования it2, вы также должны разыменовывать it.Правильный синтаксис:

if (*it == it2->first)

Кстати, когда вы сделали опечатку, вы написали it2 = class1.end() вместо it2 != class1.end().

0 голосов
/ 13 апреля 2019

Изменить это:

if (it == it2.first)

к этому:

if (*it == it2->first)

, поскольку it выполняет итерацию по вектору строки, поэтому вам нужно разыменовать его, чтобы взять фактическую строку. Аналогично для it2, где вместо * и .. вместе вы используете -> для простоты.

...