【问题标题】:Declaring an unordered_map of an unsigned int and an array (will have different sizes)?声明一个 unsigned int 和一个数组的 unordered_map(将有不同的大小)?
【发布时间】:2015-02-15 07:18:24
【问题描述】:

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

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

但是,那个人说数组的大小也必须声明(据我了解,数组只能在unordered_map中具有相同的大小)。有没有办法做我想要完成的事情?

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

我正在使用“easygl”来绘制一些东西,它们的一个函数 fillpoly 需要一个点数组来绘制多边形。我尝试传递一个向量,它没有用。所以我决定改用一个数组,结果很糟糕。

【问题讨论】:

  • 只提供一个链接(甚至是网站内部链接),会使您的问题变得非常不独立,并且难以掌握。请在您的问题中提供所有相关部分或代码、编译器错误等(如果合适,还可以链接到其他地方)。职业培训中心。

标签: c++ stl


【解决方案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() );

【讨论】:

  • 对不起,我忘了提,有一个函数(我无法在 easygl 中更改),它只接受 t_point*(其中 t_point 是我保存在数组中的类型)
  • 我个人更喜欢vec.data() 而不是&amp;vec[0]
  • 不确定.data() 在我养成 std​​::vector 习惯时是否已经存在;)
猜你喜欢
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多