GCC中的unordered_map错误

unordered_map error in GCC

本文关键字:map 错误 unordered 中的 GCC      更新时间:2023-10-16

unordered_map概念是什么时候内置到g++中的?

因为下面的代码抛出错误。

#include<iostream>
#include<unordered_map>
#include<stdio.h>
using namespace std;
std::unordered_map<std::int,int> mirror;
mirror['A'] = 'A';
mirror['B'] = '#';
mirror['E'] = 3;
int main(void)
{
    std::cout<<mirror['A'];
    std::cout<<mirror['B'];
    std::cout<<mirror['C'];
    return 0;
}

我正在按如下方式编译代码:

g++ -c hashexample.cpp
g++ -o result hashExample.o
./result

我得到的错误是:

无效类型int[char[for aray下标

解决这个问题的方法是什么?

问题是你的作业。您不能在此位置为您的地图赋值。c++不是一种脚本语言。
这个程序在我的机器上使用gcc4.6运行良好:

#include<iostream>
#include<unordered_map>
std::unordered_map<int,int> mirror;
int main() {
    mirror['A'] = 'A';
    mirror['B'] = '#';
    mirror['E'] = 3;
    std::cout<<mirror['A'];
    std::cout<<mirror['B'];
    std::cout<<mirror['C'];
}

首先,正如mkaes指出的那样,你不能把赋值放在函数之外,所以你必须把它放在任何函数中,例如main

对于unordered_map,对于最新版本的gcc,如果你不想进入c++ 11,你可以使用TR1版本的unordered_map:

#include <tr1/unordered_map>

和类型std::tr1::unordered_map。您知道,c++ 11取代了所有这些,但您将(至少在GCC中)使其工作。