我想在C STL中使用map来创建vector和int之间的关联。但我在下面的代码中遇到了多个编译错误:
#include <vector>
#include <map>
#include <unordered_map>
using namespace std;
int main(void)
{
unordered_map<vector<char>, int> mp;
return 0;
}
在VC中得到了这个编译错误:
错误C2280:'std::哈希
但是,如果我像下面介绍的那样更改代码,那么代码可以正确编译:
#include <vector>
#include <map>
#include <unordered_map>
using namespace std;
int main(void)
{
map<vector<char>, int> mp;
return 0;
}
我在StackoverFlow中发现了这个问题,它的标题是:Cunordered_map使用自定义类类型作为键
根据@JohnZwinck(优秀)的回答,我想说,使用std::unordered_map
和向量作为键通常是个坏主意,因为实现任何类型的有效哈希函数都可能需要很高的成本。
John给出的链接对此进行了扩展,但本质上,每次需要对任何内容进行哈希运算时,哈希函数都必须检查向量中的每个元素。如果向量很大,哎哟!
所以
std::map
在这里可能是更好的选择,因为std::更少
(-
map
要求实现小于比较。这是一个向量。但是unordered_map
需要一个哈希函数,您需要自己实现。这没什么大不了的,您可以在这里看到如何使用hash_combine
来实现:“std::向量”的快速哈希函数
我将repo.scala-sbt.org和dl.bintray.com证书添加到Java密钥库中,并将密钥库路径(djavax.net.ssl.truststore)添加到sbt配置中,但这并不能解决问题。有什么解决这个问题的建议吗? --TIA -djavax.net.ssl.trustStore=“\jre\lib\security\cacerts” [error](更新)LMCoursier
的类型应该是什么?Eclipse建议使用,但我试图获得更具体的信息。
下面是有问题的代码: 可在以下链接中找到该类的代码: Grades.java:http://pastebin.com/ahYRS2WD Student.java:http://pastebin.com/EBF4BBCb 班爪哇:http://pastebin.com/A1C9fCL1 我的问题发生在我运行代码并输入了班级名称、班级规模、学生姓名之后,这些都很好,当我输入学生的成绩时,这下一位给我带
问题内容: 我们要输入的值怎么 可能来自不同类型? 问题答案: 问题在于,编译器仅知道键类型为“未知”,但不知道映射键的类型和返回的类型是 相同的 未知类型(即使我们作为人类意识到这是相同的) 。 如果要使其工作,则必须通过 键入 方法来告诉编译器 相同的 未知类型,例如: __
我已经回答了大多数类似的问题,但没有一个能解决我的问题。我的表有四列:id、用户名、标题和日期。我想在用户单击按钮(锚定标记)时删除与特定用户名关联的整行。请问,我如何做到这一点?这是我试过的密码。 php 超文本标记语言 上面的代码重定向了页面,但没有删除任何内容。