GCC中的unordered_map错误
unordered_map error in 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;
}
我正在按如下方式编译代码:
g++ -c hashexample.cpp
g++ -o result hashExample.o
./result
我得到的错误是:
无效类型int[char[for aray下标
解决这个问题的方法是什么?
问题是你的作业。您不能在此位置为您的地图赋值。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'];
}
首先,正如mkaes指出的那样,你不能把赋值放在函数之外,所以你必须把它放在任何函数中,例如main
。
对于unordered_map
,对于最新版本的gcc,如果你不想进入c++ 11,你可以使用TR1版本的unordered_map
:
#include <tr1/unordered_map>
和类型std::tr1::unordered_map
。您知道,c++ 11取代了所有这些,但您将(至少在GCC中)使其工作。
相关文章:
- C++将参数包传递给std::map导致错误C3245
- c++:[错误]"map"之前的预期初始值设定项
- 编译器错误 C2664 使用 std::map 和自定义类作为其值
- std::map 擦除 - 将迭代器传递给错误的映射
- 带有 std::map 的模板函数给出错误:变量或字段声明为 void
- 尝试 ptr->map.clear() 时出现分段错误
- 错误:与'operator='不匹配(操作数类型为"std::map<int、double>::iterator
- 使用std :: map时,包含unique_ptr的结构中的默认破坏者会导致编译错误
- 自动,错误:MAP ITERATOR没有名为“ First”的成员
- 将项目插入到std :: map时错误
- 由于从 std::map 派生的类中的 std::map 迭代器导致的内存错误
- 如何在<int>错误 C2338 中组织 map<set<multiset>,int> C++
- 在 std::map 中使用结构作为值时出现运行时错误
- map.insert:"Invalid arguments"错误与 pair<enum,vector<*>>
- SWIG:包装 std::map<key 时编译器错误,val *>
- 使用 std::map 时只读成员的错误递减
- 为什么缩小转换范围不能防止错误类型的map.insert()失败
- 错误 C2062:引用 std::map 时键入意外
- std::map错误的多重定义
- 带有指针的map:错误的值评估