说,我想迭代一些内联定义的对。是否有更短的写作方式:
for(auto pair : std::initializer_list<std::pair<int,int>>{{1,2}, {3,4}})
// ...
答案 0 :(得分:10)
只需指定第一个元素就是一对。其余的将自动推断:
for(auto& pair : {std::pair<int,int>{1,2}, {3,4}})
;
支持的封闭初始值设定项推导为std::initalizer_list
,第一个被命名为一对的元素将需要所有元素作为一对的initalizer。
你标记了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版本的代码打包并不那么有用。
答案 1 :(得分:1)
好的&#39;类型别名:
$.connection.hub.qs = {'MyVariable1' : 'val1', 'MyVariable2' : 'val2'};