#include <iostream> |
#include <algorithm> |
#include <vector> |
#include <string> |
|
int main(int argc, char* argv[]) |
{ |
/** |
* lambda表达式捕获外部变量示例 |
*/ |
|
std::vector<int> vec{ 1,2,3,4,5,6,7,8,9,10 }; |
std::string str; |
|
//&str为引用捕获,在函数内部可以被修改 |
std::for_each(vec.begin(), vec.end(), [&str](int n) { |
str.append(std::to_string(n)).append(","); |
}); |
str.pop_back(); |
|
/** |
* 输出: |
* 1,2,3,4,5,6,7,8,9,10 |
*/ |
std::cout << str << std::endl; |
|
//argc为值捕获(拷贝),该变量在函数内部修改后不会影响外部变量 |
std::for_each(argv, argv + argc, [argc](char* args) { |
/** |
* 输出命令行参数 |
*/ |
std::cout << args << std::endl; |
}); |
|
/** |
* 关于其他捕获语法: |
* [=]: 所有外部变量的捕获均为值捕获(拷贝) |