这个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下标
有什么办法解决这个问题?
问题是你的任务.您无法在此处为地图指定值.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)
首先,正如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中)得到这个.