[分享] C++和Python的相似处

楼主: wtchen (没有存在感的人)   2016-05-04 02:46:48
本文大部份内容来自此网页:
C++ Has Become More Pythonic
http://preshing.com/20141202/cpp-has-become-more-pythonic/
作者: james732 (好人超)   2016-05-04 09:26:00
作者: Frozenmouse (*冰之鼠*)   2016-05-04 10:06:00
说到 param pack,昨天好奇去看了C++17 的 fold expr觉得这语法超神奇的XDDDC++在这几年真的是不断进化,都快不认识了
作者: Neisseria (Neisseria)   2016-05-04 10:28:00
建议板大连结不要放括号里,会带到浏览器,造成错误
作者: prismwu   2016-05-04 10:44:00
这篇不错耶
作者: exeex (执行档EX)   2016-05-04 10:51:00
推 for 对 vector的用法太实用了
作者: bibo9901 (function(){})()   2016-05-04 11:28:00
老实说你讲的这几点都不是python独有/独创
作者: uranusjr (←這人是超級笨蛋)   2016-05-04 14:11:00
没人说这些是 Python 独有/创新, 但 Python 是极少数拥有“全部”的语言 -- 现在 C++ 也加入这个荣誉俱乐部了希望 C++ 未来也能有 enhanced proposal 机制(打错, 是 enhancement proposal)
作者: freeunixer (御剑客)   2016-05-04 14:33:00
lambda 是从 fp 来的,最早在 lisp 就已经有了.Java 是从 8 开始才有,但基本上现在的 Python,对 lambda 依赖已经没有以前高,用型别运算产生式就行.另外,以前蔡学镛推过一个 rebol.不过这几年没啥进步..如果对 C++ 难分难舍,那也许也可以留意一下 Rust
楼主: wtchen (没有存在感的人)   2016-05-04 15:37:00
有大大可以写篇Rust跟C++的比较文吗?保证不砍
作者: bibo9901 (function(){})()   2016-05-04 15:58:00
说得也是
作者: CoNsTaR ((const *))   2016-05-04 15:59:00
推 Rust
作者: freeunixer (御剑客)   2016-05-04 16:25:00
Parameter Packs 其实就是未指定参数名称,就都算它的.比如 x= ,y= , a,b,c ,没有 = 指定输入值,就全给 *arg所以 func1 把 arg 前两个换掉再丢进 func2 去配对.2 1一般看到的范例是 func1(x, *args) 这种型式.没被指定参数名称抓到的,就全送进 *arg
楼主: wtchen (没有存在感的人)   2016-05-04 16:36:00
C++11之后,C跟C++的分歧就越来越大了....
作者: bibo9901 (function(){})()   2016-05-04 16:38:00
其实可以更彻底一点XD 为了兼容C实在牺牲太大了..
作者: freeunixer (御剑客)   2016-05-04 16:43:00
python 3.x 还有 **args 抓进去直接配成 dict 的 k:v
作者: Frozenmouse (*冰之鼠*)   2016-05-04 17:16:00
与C相容…前朝遗毒 (误
作者: Bencrie   2016-05-04 21:38:00
应该说...历史包袱(?
作者: tuyutd0505 (Huang Jason)   2016-05-04 21:56:00
推 有些写法第一次看到 学习了
作者: laba5566 (最爱56家族 啾咪)   2016-05-04 22:43:00
作者: fanntone (我是胖子)   2016-05-04 23:45:00
C++11之后就是突破大气层的感觉
作者: loveflames (咕啾咕啾魔法阵)   2016-05-05 00:11:00
final跟override也不错variadic template搭配多重继承也蛮有趣的
作者: shaopin (Brian)   2016-05-05 04:38:00
for(auto&& i: v) // access by reference, the type of对这个有点问题, 如果auto&& 是by reference 那auto&呢?
作者: red0210 (My Name Is Red)   2016-05-05 07:18:00
推 写得很棒
作者: loveflames (咕啾咕啾魔法阵)   2016-05-05 07:53:00
auto&&产生ref,auto&产生左值ref
作者: x000032001 (版废了该走了)   2016-05-05 10:51:00
偷推yoco大神的文章 #19gioP8j
作者: Sylveon (仙子精靈)   2016-05-05 12:01:00
大推~
作者: CoNsTaR ((const *))   2016-05-05 12:07:00
auto&&产生型态为右值ref的左值refauto&参考到一个左值 不产生新物件
作者: Caesar08 (Caesar)   2016-05-05 12:22:00
auto &是l value ref,auto &&是r value ref
作者: loveflames (咕啾咕啾魔法阵)   2016-05-05 12:33:00
不对,auto&&不是专门用在rvalue ref其中有用到跟template一样的折叠规则
作者: Caesar08 (Caesar)   2016-05-05 12:45:00
对不起,我错了。有具名的&&才是r value ref。auto &&是forwarding reference简单来说,auto &&i:v要看v是l value还是r value。如果v是l value,那auto &&i就是int &i;如果v是r value,那auto &&i就是int &&i
作者: shaopin (Brian)   2016-05-05 16:02:00
请问什么是有具名的&&?
作者: Caesar08 (Caesar)   2016-05-05 16:09:00
应该说,有具型态的才对。例如直接指定int &&,此时已经指定型态是int,而不是用auto帮你进行type deduction
作者: loveflames (咕啾咕啾魔法阵)   2016-05-05 16:36:00
注意const auto&&不适用折叠规则,此时就是rvalue ref跟template的推导规则一样
作者: CoNsTaR ((const *))   2016-05-05 17:46:00
简单的说,reference to rvalue 本身也是一个 lvalue
作者: suhorng ( )   2016-05-05 19:01:00
auto 跟重载那段有点怪, 这两个没关联吧Python lambda 的语法限制有点诡异. Python 不太推lambda
楼主: wtchen (没有存在感的人)   2016-05-05 19:04:00
我自己是不太喜欢用lambda,太简化的东西反而反应不过来
作者: suhorng ( )   2016-05-05 19:05:00
parameter pack 跟 variadic template 很不同吧?
作者: Caesar08 (Caesar)   2016-05-05 19:19:00
A template with at least one parameter pack iscalled a variadic template.
作者: loveflames (咕啾咕啾魔法阵)   2016-05-05 19:45:00
STL如果没lambda,functor写起来会很痛苦
作者: ronin728 (浪人)   2016-05-06 11:17:00
Python也只是跟别人学来的,C++刚好学到一样的部分而已z这些特性早在Ada,ML,Scheme就有了,他们都比Python老=.=
作者: Frozenmouse (*冰之鼠*)   2016-05-06 16:30:00
现代程式语言不都互相影响吗,真要考古谁原创考不完w
作者: os653   2016-05-06 19:34:00
只求好写、好侦错、速度快又不用造轮子,谁抄谁不重要
作者: ho83leo (LWHo)   2016-05-07 22:39:00
推整理
作者: eye5002003 (下一夜)   2016-05-07 22:41:00
好文!匿名函式这招实在太好用
作者: rodion (r-kan/reminder)   2016-05-08 01:46:00
推... 希望C++17把平行化也好好的弄出来:>
作者: fr3ak (fr3@K)   2016-05-16 02:53:00
跟 Python 背景的朋友聊天讲到 C++ Templates 的时候, 常以compile-time dock-type 类比

Links booklink

Contact Us: admin [ a t ] ucptt.com