小编Mon*_*ans的帖子

如何在C ++中将std :: vector用作std :: unordered_map的键类型?

我正在尝试建立一个unordered map在n维空间中包含点的位置。我了解std::vector满足成为key的所有要求std::map,但是此代码无法编译。我收到一长串错误消息,但这似乎是最有问题的:

error: no match for call to ‘(const std::hash<std::vector<int> >) (const std::vector<int>&)'.

有谁知道为什么g ++似乎不认为它std::vector<int>是可哈希的?

#include <vector>
#include <unordered_map>
#include <boost/functional/hash.hpp>

using namespace std;

typedef vector<int> point;

int main()
{
    unordered_map<point, int>jugSpace;
    vector<int> origin(3, 0);

    jugSpace.insert( pair<point,int>(origin, 0) );
}
Run Code Online (Sandbox Code Playgroud)

c++ hash unordered-map vector

3
推荐指数
2
解决办法
4728
查看次数

为什么 GNU Make 会尝试为没有配方的规则编译一个不存在的目标文件?

如果您运行make test以下 Makefile(带有空目录):

test.%:
    @echo $*

test: test.dummyextension
Run Code Online (Sandbox Code Playgroud)

你会得到以下输出:

dummyextension
o
cc   test.o test.dummyextension   -o test
clang: error: no such file or directory: 'test.o'
clang: error: no such file or directory: 'test.dummyextension'
clang: error: no input files
make: *** [test] Error 1
Run Code Online (Sandbox Code Playgroud)

为什么?

我怀疑它与隐式规则有关,但我make -p在我的机器上搜索,找不到任何匹配的隐式规则%: %。我希望输出只是dummyextension,但这几乎就像test.o我的目录中有一个虚拟文件(尽管我检查了十次,但没有)。

;如果您在先决条件之后添加test.dummyextension,或向test规则添加任何内容,则一切都会按预期进行。这是我能想到的最小的失败示例,我不知道为什么你会看到这种行为。有任何想法吗?

linux makefile gnu-make

1
推荐指数
1
解决办法
299
查看次数

标签 统计

c++ ×1

gnu-make ×1

hash ×1

linux ×1

makefile ×1

unordered-map ×1

vector ×1