gpt4 book ai didi

c++ - `[ ]` 算子导致 map 编译错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:34:05 25 4
gpt4 key购买 nike

我试图在 for 循环中从 map 中获取一个元素。按照 cppreference 上的示例我试试这个:

#include <iostream>
#include <map>

using namespace std;

int main()
{
map<int, int> mapping;

mapping.insert(pair<int, int>(11,1));
mapping.insert(pair<int, int>(12,2));
mapping.insert(pair<int, int>(13,3));

for (const auto &it : mapping)
mapping[it]++;


cout << "array: ";
for (const auto &it : mapping)
cout << it.second << " ";

return 0;
}

使用 gcc 会出现以下编译错误:

main.cpp: In function 'int main()':
main.cpp:15:16: error: no match for 'operator[]' (operand types are 'std::map<int, int>' and 'const std::pair<const int, int>')
mapping[it]++;

如果我理解正确,问题是 auto解析为 std::pair<const int, int>没有 []运算符被定义。我想知道是否有办法让它发挥作用。

查看完整的编译错误 here

最佳答案

怎么样

for (auto &it : mapping)
++it.second;

你的第一个循环?

关于c++ - `[ ]` 算子导致 map 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39796335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com