GCC中的unordered_map错误

sta*_*ion 4 c++ linux gcc

这个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;
}
Run Code Online (Sandbox Code Playgroud)

我正在编译代码如下:

g++ -c hashexample.cpp
g++ -o result hashExample.o
./result
Run Code Online (Sandbox Code Playgroud)

我得到的错误是这样的:

inavalid类型int [char [用于aaray下标

有什么办法解决这个问题?

mka*_*aes 5

问题是你的任务.您无法在此处为地图指定值.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'];
}
Run Code Online (Sandbox Code Playgroud)


Die*_*lla 5

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

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

#include <tr1/unordered_map>
Run Code Online (Sandbox Code Playgroud)

和类型std::tr1::unordered_map.你知道,C++ 11取代了所有这些,但你会(至少在GCC中)得到这个.