在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<> ;;但是,如果wait_for_multiple_objects取代了std :: array<>或者std :: vector<>,或者如果它被制作成可以带任何随机访问容器的函数模板,那确实是必要的.
标签:c,c11,initializer-list 来源: https://codeday.me/bug/20190829/1760626.html