Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;11,为什么这个无序的_图定义为向量<;int>;不工作?_C++_C++11 - Fatal编程技术网

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的原因。