在VertexHashTraits中,我们必须定义min_buckets,并初始化,并且要是const。
但如果,我的min_buckets一开始并不知道,根据外部输入而定呢?
当然,我并不是想要在建立hash_multimap之后改变它的值。只不过,它的值是根据程序运行中的输入而定。
在这样的情况下,我该怎么办?
struct Vertex
{
vector<Vector3> mPoint;
vector<Vector3> mNormal;
vector<Vector3> mTangent;
vector<Vector3> mBinormal;
vector<Vector2> mTexCoord;
vector<Vector4> mColour;
unsigned int mIndex; // index this is used by the hash table
};
struct VertexHashFn
{
float operator()(const Vertex& v1) const
{
// do hash here and return a float
}
};
struct VertexEqualKey
{
bool operator()(const Vertex& v1, const Vertex& v2) const
{
// compare, returns true if the same, false otherwise
}
};
struct VertexHashTraits
{
static const size_t bucket_size = 4;
static const size_t min_buckets = 8;
size_t operator()(const Vertex & key) const
{
return hash_func(key);
}
bool operator()(const Vertex & lhs, const Vertex & rhs) const
{
return order_func(lhs, rhs);
}
private:
VertexHashFn hash_func;
VertexEqualKey order_func;
};
hash_multimap<float, Vertex, VertexHashTraits> mVertexHash;
1 个解决方案
#1
接分是王道!
#1
接分是王道!