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 に答える