声明unsigned int和数组的unordered_map(将具有不同的大小)?

时间:2015-02-14 23:02:07

标签: c++ stl

请忽略unsigned int我把它放在那里是为了完整。无论如何,我的问题是如果我想在其中存储不同大小的数组,我该如何声明unordered_map

我在这里找到了一个相关的答案:Using unordered_map on array of doubles

然而,该人说必须声明数组的大小(据我所知,数组只能在unordered_map中具有相同的大小)。有没有办法做我想要完成的事情?

更新............................................

我正在使用" easygl"为了绘制多边形,一个函数fillpoly需要一个点数组来绘制多边形。我试过传递一个矢量,它没有工作。所以我决定使用一个数组,但结果很糟糕。

1 个答案:

答案 0 :(得分:1)

如果您需要不同大小的数组,通常使用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() );