gpt4 book ai didi

c++ - 基于范围的过对列表

转载 作者:可可西里 更新时间:2023-11-01 18:26:10 25 4
gpt4 key购买 nike

比如说,我想迭代一些内联定义的对。有没有更短的写法:

for(auto pair : std::initializer_list<std::pair<int,int>>{{1,2}, {3,4}})
// ...

?

最佳答案

只需指定第一个元素是一对。剩下的会自动推导:

for(auto& pair : {std::pair<int,int>{1,2}, {3,4}})
;

括号内的初始化器被推导为 std::initalizer_list,第一个被命名为一对的元素将要求所有 元素成为一对的初始化器。

您标记了 C++11,但为了完整起见,它在 C++17 中可以更短:

for(auto& pair : {std::pair{1,2}, {3,4}})
;

由于类模板参数推导。如果你没有,如果你想保持模板参数推导的好处,std::make_pair 会做:

for(auto& pair : {std::make_pair(1,2), {3,4}})
;

虽然表面上看,它不像 C++17 版本那样对代码打高尔夫球有用。

关于c++ - 基于范围的过对列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46281477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com