unordered_map d'erreur de GCC
Quand la unordered_map
concept intégré dans g++?
Parce que le code suivant génère une erreur.
#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;
}
Je compile le code comme suit:
g++ -c hashexample.cpp
g++ -o result hashExample.o
./result
L'erreur que j'ai est ceci:
inavalid types int[char[ pour aaray indice
Qu'est-ce que le correctif de ce?
Outre les solutions proposées ci-dessous, vous pouvez envisager de modifier votre modèle de <int,int> <char, int> que vous utilisez uniquement des caractères pour fournir la clé. Juste une observation/suggestion!
qui ne devrait même pas compiler en raison de la
qui ne devrait même pas compiler en raison de la
std::int
, ce qui n'est pas valide en C++.stdio.h
a été déprécié en C++ depuis au moins 13 ans, et pourquoi n'êtes-vous pas l'indentation de ton code?OriginalL'auteur station | 2011-09-09
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est votre mission. Vous ne pouvez pas affecter des valeurs à votre carte dans ce lieu. C++ n'est pas un langage de script.
Ce programme fonctionne très bien sur ma machine avec gcc4.6:
Vous avez raison "en ce lieu", c'est mieux.
ouais, j'ai vu que trop. cependant je ne peux pas le mettre dans le main.
OriginalL'auteur mkaes
Tout d'abord, comme mkaes points, vous ne pouvez pas mettre les affectations à l'extérieur de fonctions, de sorte que vous avez à mettre dans tout, par exemple
main
.Comme pour
unordered_map
, pour les versions récentes de gcc, si vous ne voulez pas aller en C++11, vous pouvez utiliser le TR1 version deunordered_map
:et le type
std::tr1::unordered_map
. Vous savez, C++11 annule et remplace tout cela, mais vous allez (au moins dans GCC) obtenir ce travail.OriginalL'auteur Diego Sevilla