現在、WordCounter(MapReduce)を書いています。
私のreduce関数の実装は次のようになります。
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を使用します。
map<string, vector<int> > WordMap;
各単語とそれが出現する行番号を含むintermediateMap変数を使用します。次に、各単語をresultMapに追加しますが、行番号の代わりに、ベクトルの最初の位置に単語数を追加します。
今、intermediateLineNrベクトル全体をコピーしてクリアし、最初の位置に単語数を挿入します。
特定のベクトルの最初の位置に直接挿入する可能性はありますか?
これを行うにはもっと簡単な方法があるはずだと思います。