GCC中的unordered_map错误

时间:2011-09-09 08:57:04

标签: 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;

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

我得到的错误是:

  

inavalid types int [char [for aaray subscript

对此有什么解决方法?

2 个答案:

答案 0 :(得分: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'];
}

答案 1 :(得分:5)

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

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

#include <tr1/unordered_map>

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