掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
出自Google的論文《MapReduce: simplified data processing on large clusters》,MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。概念"Map(映射)"和"Reduce(歸約)",是它們的主要思想,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性。它極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運行在分布式系統(tǒng)上。

公司專注于為企業(yè)提供成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、微信公眾號開發(fā)、成都做商城網(wǎng)站,重慶小程序開發(fā),軟件定制網(wǎng)站建設(shè)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗,我們會仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計、整合,為客戶設(shè)計出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。
函數(shù)式編程中的 map、reduce、filter,它們都是一種控制。而參數(shù) lambda 是邏輯(我們要解決的問題),它們一起組成了一個算法。最后,我再把數(shù)據(jù)放在數(shù)據(jù)結(jié)構(gòu)里進行處理,最終就成為了我們的程序。
注:vegetarian 素食主義者
|
C++ |
|
|
map |
std::transform |
|
filter |
std::remove_if |
|
reduce |
std::accumulate |
#include
#include
#include
#include
using namespace std;
int main(){
std::vectornums{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
std::vectorcache (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

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流