C++ c++;11,为什么这个无序的_图定义为向量<;int>;不工作?
我正在尝试创建一个C++ c++;11,为什么这个无序的_图定义为向量<;int>;不工作?,c++,c++11,C++,C++11,我正在尝试创建一个无序的\u映射。我知道我需要有自己的散列函数,所以我尝试构建一个。我能够创建它并很好地编译它,但当我尝试访问它时,会出现编译错误 代码如下: #include <bits/stdc++.h> using namespace std; class mhash { public: std::size_t operator()(std::vector<int> const& vec) const { std::size_t seed =
无序的\u映射
。我知道我需要有自己的散列函数,所以我尝试构建一个。我能够创建它并很好地编译它,但当我尝试访问它时,会出现编译错误
代码如下:
#include <bits/stdc++.h>
using namespace std;
class mhash {
public:
std::size_t operator()(std::vector<int> const& vec) const {
std::size_t seed = vec.size();
for(auto& i : vec) {
seed ^= i + 0x9e3779b9 + (seed << 6) + (seed >> 2);
}
return seed;
}
};
map <vector <int>,int, mhash> M;
int main(){
vector <int> V;
M[V]=5;
cout << M[V];
}
你写的是地图,不是无序的地图 但是。。。如果您想要一张地图: 映射的第三个模板参数不是散列,而是比较器。
bool操作符()(a,b)您编写了映射,而不是无序的映射 但是。。。如果您想要一张地图: 映射的第三个模板参数不是散列,而是比较器。
bool操作符()(a,b)因为您实例化了
std::map
,而不是std::unordered\u map
普通映射不接受散列函数
大概这只是一个打字错误
顺便说一下,.因为您实例化了
std::map
,而不是std::unordered\u map
普通映射不接受散列函数
大概这只是一个打字错误
顺便问一下,.您是如何尝试使用它的?您会遇到哪些错误?这正是我试图给出的用法。我得到的错误仅仅来自上面的代码,我会添加错误。你是如何尝试使用它的,你得到了什么错误?这正是我试图给出它的用途。我得到的错误仅仅来自上面的代码,我会添加错误。我的编程经验仅限于竞赛,这就是为什么我使用include bits的原因。我的编程经验仅限于竞赛,这就是为什么我使用include bits的原因。