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
对此有什么解决方法?
答案 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中)得到这个。