背景:私はJavaの世界から来ており、C++やQtを新しく使っています。ベクタをキーとして使用するとC++のunordered_mapが失敗する
#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();
}
は、残念ながら、私は感動ではないfolowingエラーに実行しています:unordered_mapと遊ぶために
は、私は次の簡単なプログラムを書かれています。行番号さえありません。
:-1: error: collect2: ld returned 1 exit status
問題の原因は何ですか?
ありがとうございます。
「ベクトル」を受け取るハッシュ関数が必要です –
これは実行時エラーではありません。 –
@SethCarnegieそれは私の問題でもありました。しかし、ベーシックなクラスはデフォルトのハッシュ関数を持っているはずです。それが事実でない場合、あなたは私に何かを提供する方法を教えてくれますか、何かを教えてください。ありがとうございました! –