[分享] 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