【发布时间】:2023-03-14 06:07:02
【问题描述】:
背景:我来自 Java 世界,对 C++ 或 Qt 还很陌生。
为了玩 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();
}
不幸的是,我遇到了以下不鼓舞人心的错误。连行号都没有。
:-1: 错误:collect2: ld 返回 1 个退出状态
知道问题的根源吗?
【问题讨论】:
-
你需要一个带有
vector<float>的哈希函数 -
这不是运行时故障。
-
@SethCarnegie 这就是我虽然问题也来了。但是,在我看来,像向量这样基本的类应该有一个默认的散列函数。如果不是这样,您能否解释一下如何提供一个或指向我一些材料。谢谢!
-
有效且有趣的问题,但我没有看到将列表用作地图中的键的用例。
-
@UmNyobe int 是大量计算的结果,其中向量是输入。计算后的结果需要多次快速访问。
标签: c++ qt vector c++11 unordered-map