C++ unordered_map échouer lorsqu'il est utilisé avec un vecteur clé

Contexte: je suis en venant du monde Java et je suis assez novice en C++ et Qt.

Afin de jouer avec unordered_map, j'ai écrit le programme simple suivant:

#include <QtCore/QCoreApplication>
#include <QtCore>
#include <iostream>
#include <stdio.h>
#include <string>
#include <unordered_map>

using std::string;
using std::cout;
using std::endl;
typedef std::vector<float> floatVector;

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    floatVector c(10);
    floatVector b(10);

    for (int i = 0; i < 10; i++) {
        c[i] = i + 1;
        b[i] = i * 2;
    }

    std::unordered_map<floatVector, int> map;

    map[b] = 135;
    map[c] = 40;
    map[c] = 32;

    std::cout << "b -> " << map[b] << std::endl;
    std::cout << "c -> " << map[c] << std::endl;
    std::cout << "Contains? -> " << map.size() << std::endl;

    return a.exec();
}

Malheureusement, je suis en cours d'exécution dans ce qui suit d'erreur qui n'est pas inspirant. Il n'est même pas un numéro de ligne.

:-1: erreur: collect2: ld a retourné 1 code de sortie

Aucune idée de l'origine du problème?

Merci d'avance.

Vous avez besoin d'une fonction de hachage qui prend un vector<float>
Ce n'est pas un échec d'exécution.
C'était ce à quoi j'ai pensé que le problème était à venir. Cependant, il me semble qu'une classe de base comme vecteur doit avoir un défaut de fonction de hachage. Si ce n'est pas le cas, pourriez-vous m'expliquer comment fournir de l'un ou de m'indiquer un peu de matériel. Merci!!!!
Valable et intéressante question, mais je ne vois pas un cas d'utilisation où il sera intelligent pour utiliser une liste de clé dans une carte.
L'int est le résultat d'un gros calcul à partir de laquelle le vecteur est l'entrée. Le résultat une fois calculé besoin de l'accès à de nombreuses reprises et rapidement.

OriginalL'auteur Pierre-Antoine | 2012-05-01