C++ unordered_map scheitern, wenn Sie mit einem Vektor als Schlüssel

Hintergrund: ich bin kommend aus der Java-Welt und ich bin ziemlich neu in C++ oder Qt.

Um zu spielen mit unordered_map, die ich geschrieben habe, das folgende einfache Programm:

#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();
}

Leider habe ich folgende Fehler, die nicht inspirierend. Es gibt nicht einmal eine Zeilennummer.

:-1: Fehler: collect2: ld zurückgegeben, 1 exit status

Jede Idee, der Ursprung des Problems?

Vielen Dank im Voraus.

  • Sie brauchen eine hash-Funktion nimmt einen vector<float>
  • Dies ist nicht ein runtime-Fehler.
  • Das war es, was ich dachte, war das problem zu kommen. Jedoch, es scheint mir, dass eine Klasse als Basis als Vektor sollte eine Standard-hash-Funktion. Wenn es nicht der Fall ist, könnten Sie mir erklären, wie ein oder zeigen Sie mir etwas material. Danke!!!
  • Vielen Dank für den Hinweis.
  • Gültige und interessante Frage, aber ich sehe nicht ein Anwendungsfall, wo es klug sein, um die Verwendung einer Liste, die als Schlüssel in einer map.
  • Die int ist das Ergebnis einer Berechnung aus dem der Vektor ist der Eingang. Das Ergebnis einmal berechnet werden müssen, um Zugang zu vielen Zeiten und schnell.

Schreibe einen Kommentar