其他分享
首页 > 其他分享> > 在C中组合前缀和*操作

在C中组合前缀和*操作

作者:互联网

How to pass an initializer list as a function argument?的答案中,我看到了表达式:

return WaitForMultipleObjects(
    handles.size(), &*handles.begin(), wait_all, time
);

& *有什么意义?没有它,电话会有相同的含义吗?

解决方法:

>通常,container.begin()返回一个迭代器
>通常,& * container.begin()返回一个指针
> WaitForMultipleObjects需要一个HANDLE const *

对于std :: initializer_list<>特别是,迭代器被定义为指针;但是A)这不能推广到其他容器类型,而B)标准库实现经常在调试版本中使用已检查的迭代器,这些迭代器必然是UDT.

对于您链接的特定答案,& *不是必需的,因为它专门使用std :: initializer_list<&gt ;;但是,如果wait_for_multiple_objects取代了std :: array<>或者std :: vector<>,或者如果它被制作成可以带任何随机访问容器的函数模板,那确实是必要的.

标签:c,c11,initializer-list
来源: https://codeday.me/bug/20190829/1760626.html