在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>C/C++語言編程>

現(xiàn)代C函數(shù)式編程

大小:0.7 MB 人氣: 2017-09-30 需要積分:1

  導(dǎo)讀:本文作者從介紹函數(shù)式編程的概念入手,分析了函數(shù)式編程的表現(xiàn)形式和特性,最終通過現(xiàn)代C++的新特性以及一些模板云技巧實(shí)現(xiàn)了一個(gè)非常靈活的pipeline,展示了現(xiàn)代C++實(shí)現(xiàn)函數(shù)式編程的方法和技巧,同時(shí)也體現(xiàn)了現(xiàn)代C++的強(qiáng)大威力和無限可能。

  概述

  函數(shù)式編程是一種編程范式,它有下面的一些特征:

  函數(shù)是一等公民,可以像數(shù)據(jù)一樣傳來傳去。高階函數(shù)遞歸pipeline惰性求值柯里化偏應(yīng)用函數(shù)

  C++98/03中的函數(shù)對(duì)象,和C++11中的Lambda表達(dá)式、std::function和std::bind讓C++的函數(shù)式編程變得容易。我們可以利用C++11/14里的新特性來實(shí)現(xiàn)高階函數(shù)、鏈?zhǔn)秸{(diào)用、惰性求值和柯理化等函數(shù)式編程特性。本文將通過一些典型示例來講解如何使用現(xiàn)代C++來實(shí)現(xiàn)函數(shù)式編程。

  高階函數(shù)和pipeline的表現(xiàn)形式

  高階函數(shù)就是參數(shù)為函數(shù)或返回值為函數(shù)的函數(shù),經(jīng)典的高階函數(shù)就是map、filter、fold和compose函數(shù),比如Scala中高階函數(shù):

  map

  numbers.map((i: Int) =》 i * 2)

  對(duì)列表中的每個(gè)元素應(yīng)用一個(gè)函數(shù),返回應(yīng)用后的元素所組成的列表。

  filter

  numbers.filter((i: Int) =》 i % 2== 0)

  移除任何對(duì)傳入函數(shù)計(jì)算結(jié)果為false的元素。

  fold

  numbers.fold(0){ (z, i)=》a + i }

  將一個(gè)初始值和一個(gè)二元函數(shù)的結(jié)果累加起來。

  compose

  val fComposeG= f _compose g _fComposeG(“x”)

  組合其它函數(shù)形成一個(gè)新函數(shù)f(g(x))。

  上面的例子中,有的是參數(shù)為函數(shù),有的是參數(shù)和返回值都是函數(shù)。高階函數(shù)不僅語義上更加抽象泛化,還能實(shí)現(xiàn)“函數(shù)是一等公民”,將函數(shù)像data一樣傳來傳去或者組合,非常靈活。其中,compose還可以實(shí)現(xiàn)惰性求值,compose的返回結(jié)果是一個(gè)函數(shù),我們可以保存起來,在后面需要的時(shí)候調(diào)用。

  pipeline把一組函數(shù)放到一個(gè)數(shù)組或是列表中,然后把數(shù)據(jù)傳給這個(gè)列表。數(shù)據(jù)就像一個(gè)鏈條一樣順序地被各個(gè)函數(shù)所操作,最終得到我們想要的結(jié)果。它的設(shè)計(jì)哲學(xué)就是讓每個(gè)功能就做一件事,并把這件事做到極致,軟件或程序的拼裝會(huì)變得更為簡單和直觀。

  Scala中的鏈?zhǔn)秸{(diào)用是這樣的:

  s(x)= (1to x)|》 filter(x =》 x % 2 == 0) |》 map (x =》 x * 2)

  用法和Unix Shell的管道操作比較像,|前面的數(shù)據(jù)或函數(shù)作為|后面函數(shù)的輸入,順序執(zhí)行直到最后一個(gè)函數(shù)。

  這種管道方式的函數(shù)調(diào)用讓邏輯看起來更加清晰明了,也非常靈活,允許你將多個(gè)高階函數(shù)自由組合成一個(gè)鏈條,同時(shí)還可以保存起來實(shí)現(xiàn)惰性求值。現(xiàn)代C++實(shí)現(xiàn)這種pipeline也是比較容易的,下面來講解如何充分借助C++11/14的新特性來實(shí)現(xiàn)這些高階函數(shù)和pipeline。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 亚洲第一视频区 | 久久久久国产精品免费网站 | 在线观看黄日本高清视频 | 7m凹凸精品分类大全免费 | 四虎国产永久在线精品免费观看 | 日韩精品网址 | 国产69精品久久久久9牛牛 | 天堂网www在线资源网 | 天天插天天插 | 亚洲一区二区免费视频 | 在线观看黄色x视频 | 俺也射 | 欧美超级碰碰 | 色琪琪一本到影院 | 99视频在线永久免费观看 | 在线免费观看你懂的 | 天天摸天天插 | 黄色免费网站在线观看 | 国产爽视频 | 免费视频国产 | 亚洲情a成黄在线观看动 | 日本韩国做暖暖小视频 | 国产精品爱啪在线线免费观看 | 男人的天堂97 | 日产精品卡二卡三卡四卡乱码视频 | 女人张腿让男子桶免费动态图 | 天天天天做夜夜夜做 | 福利观看| 天天久久影视色香综合网 | 亚洲第一网站快活影院 | 国产高清色视频免费看的网址 | 好大好硬好爽免费视频 | 狠狠干夜夜爽 | 三级色网站 | 中文字字幕码一二区 | 亚洲乱论 | 成人在线视频网址 | 全部免费特黄特色大片视频 | 亚洲国产成人久久精品影视 | 噜噜噜天天躁狠狠躁夜夜精品 | 三级高清|