1

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

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

4

2 回答 2

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; });
于 2012-07-24T04:49:54.290 回答
1
  • 根据地图的大小保留向量中的空间。请参阅“std::vector::reserve”成员。
  • 使用 std::copy 和 std::back_inserter。
于 2012-07-24T04:49:45.587 回答