关于hash_multimap预设大小(bucket_size, min_buckets)的问题

时间:2022-08-13 19:07:34
下面是一个在VC中使用hash_multimap的例子。
在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


接分是王道!