创建犰狳矢量的无序联合容器

时间:2014-01-29 02:40:22

标签: c++ stl armadillo

我正在尝试创建一个std :: unordered_set的Armadillo对象,例如。

std::unordered_set<arma::vec2> my_set;

在编译时,下面的代码吐出大约60多行错误,我认为错误与vec2没有散列函数有关。我试过clang 3.5和gcc 4.8.2。

#include <unordered_set>
#include <armadillo>

bool operator==(arma::vec2 r, arma::vec2 l) {
    for (size_t i=0; i<r.size(); ++i)
        if (r[i]!=l[i]) return false;
    return true;
}

struct vec2Hash {
    size_t operator()(const arma::vec2& x) const {
        return std::hash<double>()(x[0]) ^ std::hash<double>()(x[1]);
    }
};


int main() {
    arma::vec2 a{1,2};
    std::unordered_set<arma::vec2,vec2Hash> t;
    t.insert(a);                                //This line doesn't compile.
    //unordered_set<vec2,vec2Hash> t({a});      //Neither would this line.

    return 0;
}

0 个答案:

没有答案
相关问题