概述
利用C++ Lambda优化多分支赋值
我们经常需要根据不同的条件分枝来获取一个变量一共后续使用,
- 通常我们会这么做。
//...
Type res;
switch (val) {
case val0: res = Type(...); break;
case val1: res = Type(...); break;
case val2: res = Type(...); break;
case val3: res = Type(...); break;
..
}
...
...
//...
上述代码需要执行一次默认构造,一次赋值,效率不高,就算有move-assignment的加持,其对默认构造的要求也是一个包袱,对于不支持默认构造的类型很难以此形式解决需求。
- 那么,如果把上述代码写成一个函数,直接在对应的分支return对应的对象,在结合C++2.0的编译器对return-by-value的优化,再结合使用inline关键字,也可以实现较好的效果,当然要多写一个函数,如果仅是用一次,或是这样的需求有很多(要写很多函数),很麻烦,也有点不利于代码组织。结合这个利用函数返回值的思路,借助Lambda表达式便可以灵活的解决这个问题。
//...
Type res = [&val] {
switch (val) {
case val0: return Type(...); break;
case val1: return Type(...); break;
case val2: return Type(...); break;
case val3: return Type(...); break;
..
}
}();
...
...
//...
最后
以上就是落后哈密瓜为你收集整理的利用C++ Lambda优化多分支赋值的全部内容,希望文章能够帮你解决利用C++ Lambda优化多分支赋值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复