C++14尝鲜,趣味编程:用lambda实现斐波那契数列
来源:互联网 发布:java 日志等级 编辑:程序博客网 时间:2024/06/07 17:36
斐波那契数列
#include <iostream>#include <utility>using namespace std;int main(){auto fib = [a = 0, b = 1]() mutable {a = exchange(b, a + b);return a;};for(int i = 0; i < 10; ++i)cout << fib() << endl;}
代码说明:
- 这段代码总共打印10个斐波那契数。
- fib这个lambda表达式是一个斐波那契数的生成器。每次调用都能产生下一个斐波那契数。
- [a = 0, b = 1] 这是lambda表达式的捕获列表,通过通用值捕获(即 标识符+初始化器)这一方式 lambda表达式引入 a 和 b 两个变量并分别给它们赋值。通用捕获是C++14所引入的新功能。
- a = exchange(b, a + b); 这是斐波那契数列的生成器部分。这行代码将 a+b 赋给 b,然后将 b 原有的值赋给 a。
这行代码大致相当于auto temp = b;b = a + b;a = temp;
- 要理解这行代码,首先得理解 C++14 新引进的函数 std::exchange()。
template< class T, class U = T > T exchange( T& obj, U&& new_value );Replaces the value of obj with new_value and returns the old value of obj.
std::exchange()函数的功能为:将变量 obj 的值替换为 new_value,然后返回变量 obj 原有的值。 - mutable指示符必不可少,否则通用值捕获得到的变量 a 和 b 在lambda表达式函数体内将不能被赋值。
std::exchange 与 std::swap
lambda表达式中的值捕获
0 0
- C++14尝鲜,趣味编程:用lambda实现斐波那契数列
- 斐波那契数列C实现
- 用 C 语言实现 斐波那契数列
- 斐波那契数列-java编程:三种方法实现斐波那契数列
- 斐波那契数列-java编程:三种方法实现斐波那契数列
- 菲波那契数列编程实现
- 斐波那契数列编程C语言
- Linux shell实现斐波那契数列编程
- C++编程->斐波那契数列模板判断实现
- c/c++实现斐波那契数列
- C/C++实现斐波那契数列
- c 实现斐波那契(fibonacii)数列
- C语言斐波那契数列的多种实现
- C语言递归方法实现斐波那契数列
- 斐波那契数列算法c语言实现
- 斐波那契数列C语言实现
- 斐波那契数列-C语言实现
- 编程题目:斐波那契数列
- Android--进程间通信的几种实现方式
- 【Java每日一题】20170222
- junit单元测试
- Android studio devolpment error
- 机器学习基石笔记--1
- C++14尝鲜,趣味编程:用lambda实现斐波那契数列
- 【hdoj_2124】RepairTheWall
- 图片预取
- html第二天表格与表单标签
- Python进行URL编码及解码
- css-css3动画翻页,css发光
- 最大子序列和
- 208 Implement Trie (Prefix Tree)
- 代码片段