c++ - 无法在 C++ 中通过 auto 迭代映射
问题描述
我试图通过自动功能迭代这个简单的功能,但它给了我很多错误。我不知道这段代码有什么问题。
#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 的一个特性。
遍历std::unordered_map
C++11 中的代码看起来像:
for (auto const& p : m) {
std::cout << "I have " << p.second << " " << p.first << ".\n";
}
推荐阅读
- android - 如何解决 tflte 中运行方法出现空指针的错误
- python - 在 Kubernetes 中通过代码创建文件
- arrays - 包含所有元素而不使用数组的最短子数组?
- javascript - document.forms[0].item 不是函数
- java - 有没有办法在并行测试开始之前运行一些代码?
- c# - RSACryptoServiceProvider 在 .NET Core 2.1 中返回 null
- javascript - 尝试在 google.runtime.onStartup 中使用 google.storage.sync.set 无效
- javascript - 为什么我的单击事件在第二次单击按钮时不起作用?
- django - 从数据库表中读取 Django urls.py、models.py、views.py 文件内容
- excel - Excel 宏:粘贴链接运行时错误 1004