日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
C++代碼賞析:Map、Filter、Reduce

概念

出自Google的論文《MapReduce: simplified data processing on large clusters》,MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。概念"Map(映射)"和"Reduce(歸約)",是它們的主要思想,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性。它極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運行在分布式系統(tǒng)上。

公司專注于為企業(yè)提供成都做網站、網站建設、外貿營銷網站建設、微信公眾號開發(fā)、成都做商城網站,重慶小程序開發(fā),軟件定制網站建設等一站式互聯(lián)網企業(yè)服務。憑借多年豐富的經驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)公司更提供一系列網站制作和網站推廣的服務。

  • 程序 = 算法 + 數(shù)據(jù)結構
  • 算法 = 控制 + 邏輯
  • 程序復雜度 = 控制復雜度(可降低) + 邏輯復雜度(理論下限)
  • 架構或設計目的就是分離控制和邏輯

函數(shù)式編程中的 map、reduce、filter,它們都是一種控制。而參數(shù) lambda 是邏輯(我們要解決的問題),它們一起組成了一個算法。最后,我再把數(shù)據(jù)放在數(shù)據(jù)結構里進行處理,最終就成為了我們的程序。

注:vegetarian 素食主義者

C++

map

std::transform

filter

std::remove_if

reduce

std::accumulate

例子

  1. 過濾出奇數(shù)
  2. 把上一步計算結果分別做平方處理
  3. 把上一步的結果進行求和
#include 
#include
#include
#include

using namespace std;

int main(){
std::vector nums{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
std::vector cache (nums.size());

// filter
auto it = std::copy_if (nums.begin(),
nums.end(),
cache.begin(),
[](int n){return n % 2 == 1;});
// shrink container to new size
cache.resize(std::distance(cache.begin(),it));

// map
std::transform(cache.begin(),
cache.end(),
cache.begin(),
[](int n) -> int {return n * n; });

auto result = std::accumulate(cache.begin(),
cache.end(),
0,
[] (int carry, int n){ return carry + n;});

std::cout << result << std::endl;

return 0;
}

在線測試

https://wandbox.org/permlink/yqa3d46oSx2GnVoQ


網頁名稱:C++代碼賞析:Map、Filter、Reduce
新聞來源:http://www.dlmjj.cn/article/dpjhejs.html