我有std::vector
个句柄对象。我必须等待这些句柄对象在WaitForMultipleObjects
函数中使用。由于它是一个向量,我在WaitForMultipleObjects
中使用它时遇到错误:
std::vector<HANDLE> events;
// ...
WaitForMultipleObjects(events.size(), events, true, INFINITE);
有没有办法做到这一点?
答案 0 :(得分:3)
最好是,如果你有STL的最新版本,你应该使用:
WaitForMultipleObjects(events.size(), events.data(), true, INFINITE);
对于较旧的STL,如果.data()不能用作矢量的方法,则可以使用&amp; events [0]。
答案 1 :(得分:1)
如果查看WaitForMultipleObject
的文档,您会看到第二个参数是指针,而不是std::vector
。 <{1}}类不能用于代替指针或本机数组。
唯一的你可以做的一种方法是创建一个临时的“数组”,并将所有句柄复制到它,并将其用作参数。
根据Charles的建议,另一种方法是使用std::vector
或Tony建议使用&vector[0]
(如果可用)。
答案 2 :(得分:1)
你应该这样做
WaitForMultipleObjects(events.size(), &events[0], true, INFINITE);
这是便携式的,也是可行的方式。
答案 3 :(得分:1)
获取底层矢量缓冲区的规范方法是
&events[0]
所以你可以这样做:
WaitForMultipleObjects(events.size(), &events[0], true, INFINITE);