c++ python_C++ 逐渐 Python 化

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。即将到来的 范围提案有潜力进一步简化这些表达式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值