声明一个无符号int和一个数组的无序映射(将具有不同的大小)
Declaring an unordered_map of an unsigned int and an array (will have different sizes)?
为了完整起见,请忽略我放在那里的unsigned int
。无论如何,我的问题是,如果我想在unordered_map
中存储不同大小的数组,我该如何声明它
我在这里找到了一个相关的答案:在双阵列上使用无序映射
然而,该人士表示,数组的大小也必须声明(据我所知,数组在unordered_map
中只能具有相同的大小)。有没有一种方法可以实现我想要实现的目标?
更新。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
我用"easygl"来画一些东西,它们的一个函数fillpoly需要一个点数组来画多边形。我试着传递一个矢量,但没有成功。所以我决定用一个数组来代替,结果结果很糟糕。
如果需要不同大小的数组,通常使用std::vector<>。
因此,您要查找的数据类型(从unsigned int到std::vector<>的哈希表,其中包含…t_point…)看起来像这样:
typedef std::unordered_map<unsigned int, std::vector<t_point> > MyHashTable;
如果你有一个遗留的C++/C api,它需要一个普通的t_point数组,你可以用这样的向量来调用它:
void Foo( t_point* array, size_t length );
std::vector<t_point> vec;
vec.push_back(t_point()); // just so our array is not empty...
Foo( &vec[0], vec.length() );