Antecedentes: Estoy viniendo desde el mundo Java y yo soy bastante nuevo en C++ o Qt.C++ unordered_map fallar cuando se utiliza con un vector como clave
Para jugar con unordered_map, he escrito el siguiente programa simple:
#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();
}
Por desgracia, estoy corriendo en el error folowing que no es inspirador. Ni siquiera hay un número de línea.
:-1: error: collect2: ld returned 1 exit status
¿Alguna idea del origen del problema?
Gracias de antemano.
Necesita una función hash que tome un 'vector' –
Esto no es un error en el tiempo de ejecución. –
@SethCarnegie Eso fue lo que pensé que el problema también venía. Sin embargo, me parece que una clase tan básica como vector debe tener una función hash predeterminada. Si no es el caso, ¿podría explicarme cómo proporcionar uno o señalarme algún material? ¡Gracias! –