0
當前我在寫一個WordCounter(MapReduce)。MapReduce - 在地圖中直接插入矢量的第一個位置<int>
我的精簡函數的實現看起來像:
void WordCounter::Reduce(string intermediateWord, vector<int> intermediateLineNr) {
resultMap.insert(pair<string, vector<int> >(intermediateWord, intermediateLineNr));
vector<int>& resultLineNr = resultMap[intermediateWord];
resultLineNr.clear();
resultLineNr.push_back(intermediateLineNr.size());
} // WordCounter::Reduce
我也用一個resultMap這是一個字符串和vectory數據組件的地圖:
map<string, vector<int> > WordMap;
我使用intermediateMap變量其中包含每個單詞和它出現的行號。現在我想將每個單詞添加到resultMap中,而不是行號,我想在矢量的第一個位置添加單詞的數量。
現在我複製整個intermediateLineNr向量,清除它並在第一個位置插入單詞數。
有沒有可能直接插入特定向量的第一個位置?
我認爲應該有一個更簡單的方法來做到這一點。
Thansk,對我來說工作得很好。但是我有一個問題,如果地圖中不存在[]操作符會自動添加單詞嗎? – MeJ 2013-03-10 17:00:57
是的,這是如何指定行爲的 – 2013-03-10 17:04:11
是的,map有這樣的operator [],它自動添加缺少的元素。很多人說因爲這個原因地圖很混亂。 – 2013-03-10 17:04:43