Невозможно повторить карту через auto в C ++ - PullRequest
3 голосов
/ 01 апреля 2020

Я пытаюсь повторить эту простую автоматическую функцию, но она дает мне массу ошибок. Я не знаю, что не так с этим кодом.

#include <vector>
#include <unordered_map>
#include <iostream>
using namespace std;

int main() {
  std::unordered_map<std::string, int> m = {
      {"apples", 5},
      {"bananas", 3},
      {"pears", 7},
  };
  for (auto& [fruit, count] : m) { //line 13
    std::cout << "I have " << count << " " << fruit << ".\n";
  }
}

13 [ошибка] ожидаемый неквалифицированный идентификатор перед '[' token13

14 [ошибка] ожидается ';' до того, как '[' token

13 [Error] 'fruit' не было объявлено в этой области

13 [Error] 'count' не было объявлено в этой области

И еще много ошибок. Я прочитал этот пример в Интернете, и он отлично работает там.

1 Ответ

3 голосов
/ 01 апреля 2020

Структурированные привязки - это функция C ++ 17.

Итерация по std::unordered_map в C ++ 11 будет выглядеть примерно так:

for (auto const& p : m) {
    std::cout << "I have " << p.second << " " << p.first << ".\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...