簡體   English   中英

無法在 C++ 中通過 auto 迭代映射

[英]Cannot iterate map through auto in C++

我試圖通過自動功能迭代這個簡單的方法,但它給了我很多錯誤。 我不知道這段代碼有什么問題。

#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 之前是不合格的 ID

14 [錯誤] 預期為 ';' 在 '[' 標記之前

13 [錯誤] 'fruit' 未在此范圍內聲明

13 [錯誤] 'count' 未在此范圍內聲明

還有更多錯誤。 我在網上閱讀了這個例子,它在那里工作正常。

結構化綁定是 C++17 的一項功能。

在 C++11 中遍歷std::unordered_map看起來像這樣:

for (auto const& p : m) {
    std::cout << "I have " << p.second << " " << p.first << ".\n";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM