Lambda表达式
Python从1994年开始支持lambda函数。
myList.sort(key = lambda x: abs(x))
Lambda表达式是在C++11中被添加进去。
std::sort(myList.begin(), myList.end(), [](int x, int y){ return std::abs(x)
2001年,Python添加了 静态嵌套作用域,可以让lambda函数抓取定义在封闭函数内的变量。
def adder(amount): return lambda x: x + amount
...
print(adder(5)(5))
同样,C++ lambda表达式支持一堆灵活的 抓取规则,可以让你做相似的事情:
auto adder(int amount) { return [=](int x){ return x + amount; };
}
...
std::cout <
标准算法
Python内建 filter 函数可以让你有选择的从一个列表中拷贝项(虽然列表解析是首先):
result = filter(lambda x: x >= 0, myList)
C++11中 引入了 std::copy_if ,让你可以使用一个类似的、相当功能的类型:
auto result = std::vector{};
std::copy_if(myList.begin(), myList.end(), std::back_inserter(result), [](int x){ return x >= 0; });
其他的C++ 算法模仿了Python的内建函数包括 transform、 any_of、 all_of, min 以及 max。即将到来的 范围提案有潜力进一步简化这些表达式。