ошибка unordered_map в GCC - PullRequest
       15

ошибка unordered_map в GCC

4 голосов
/ 09 сентября 2011

Когда в 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 [для индекса aaray

Что это за исправление?

Ответы [ 2 ]

5 голосов
/ 09 сентября 2011

Во-первых, как указывает mkaes, вы не можете помещать назначения вне функций, поэтому вы должны поместить их в любую, например, main.

Что касается unordered_map, для последних версий gcc, если вы не хотите заходить в C ++ 11, вы можете использовать TR1-версию unordered_map:

#include <tr1/unordered_map>

и тип std::tr1::unordered_map. Вы знаете, C ++ 11 заменяет все это, но у вас (по крайней мере, в GCC) это заработает.

5 голосов
/ 09 сентября 2011

Проблема в вашем назначении. Вы не можете присвоить значения своей карте в этом месте. 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'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...