9.5. Lambda 表达式

总述

Lambda 表达式对形参和函数体的格式化和其他函数一致; 捕获列表同理, 表项用逗号隔开.

说明

若用引用捕获, 在变量名和 & 之间不留空格.

  1. int x = 0;
  2. auto add_to_x = [&x](int n) { x += n; };

短 lambda 就写得和内联函数一样.

  1. std::set<int> blacklist = {7, 8, 9};
  2. std::vector<int> digits = {3, 9, 1, 8, 4, 7, 1};
  3. digits.erase(std::remove_if(digits.begin(), digits.end(), [&blacklist](int i) {
  4. return blacklist.find(i) != blacklist.end();
  5. }),
  6. digits.end());