C++ GCC中的无序_映射错误

C++ GCC中的无序_映射错误,c++,linux,gcc,C++,Linux,Gcc,什么时候在g++中内置了unordered_map概念 因为下面的代码抛出了一个错误 #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; i

什么时候在g++中内置了
unordered_map
概念

因为下面的代码抛出了一个错误

#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;
}
我得到的错误是:

对于aaray下标,无效类型int[char]


<>这是什么问题?

< p>问题是你的任务。你不能在这个地方给你的地图赋值。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'];
}
#包括
#包括
std::无序映射镜像;
int main(){
镜像['A']='A';
镜像['B']='#';
镜像['E']=3;

std::cout首先,正如mkaes指出的,不能将赋值放在函数之外,因此必须将赋值放在任何函数中,例如
main

至于
unordered_-map
,对于gcc的最新版本,如果您不想进入C++11,可以使用TR1版本的
unordered_-map

#include <tr1/unordered_map>
#包括

类型
std::tr1::unordered_map
。你知道,C++11取代了所有这些,但你会(至少在GCC中)除了下面的解决方案,你可以考虑将模板从你只使用字符的改变为仅仅提供一个观察或建议,因为C++不允许编译,因为它是无效的C++。几年前,你为什么不缩进你的代码?你可以“用这种方式”,但不能“在这个地方”!是的,我也看到了。但是我不能把它放在main中。
#include <tr1/unordered_map>