获取地图的内容作为数组

时间:2012-07-24 04:40:17

标签: c++ stl map std

我有std::mapHANDLE个对象, std::map<int, HANDLE> MyMap;

我必须使用WaitForMultipleObjects()函数等待这些句柄对象。为此,我必须将地图内容作为HANDLE对象的数组。(如果它是一个向量,那么我们可以使用vector.data()函数)。我正在寻找这样一个简单的功能来实现这一目标。

2 个答案:

答案 0 :(得分:6)

假设您使用的是最新版本的VC ++(2010或2012)或g ++(4.6或更新版本),您应该能够做到这样的事情:

std::vector<HANDLE> handles;

std::transform(your_map.begin(), your_map.end(),
    std::back_inserter(handles),
    [](std::pair<const int, HANDLE> const &i) { return i.second; });

答案 1 :(得分:1)

  • 根据地图的大小预留矢量中的空间。参见'std :: vector :: reserve'成员。
  • 使用std :: copy和std :: back_inserter。