c++ - MapReduce - 直接插入 map 中 vector<int> 的第一个位置

标签 c++ dictionary vector mapreduce word-count

目前我正在编写一个 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,它是一个带有字符串和 vector 数据组件的映射:

map<string, vector<int> > WordMap;

我使用一个 intermediateMap 变量,它包含每个单词及其出现的行号。现在我想将每个单词添加到 resultMap,但我想在 vector 的第一个位置添加单词数而不是行号。

现在我复制整个 intermediateLineNr vector ,清除它并在第一个位置插入单词数。

有没有可能直接插入特定 vector 的第一个位置?

我认为应该有更简单的方法来做到这一点。

最佳答案

我可能不明白你的要求,但你发布的代码相当于:

void WordCounter::Reduce(string intermediateWord, vector<int> intermediateLineNr) 
{
    resultMap[intermediateWord] = vector<int>( 1, intermediateLineNr.size() );
} // WordCounter::Reduce

请注意,您正在传递 vector<int> intermediateLineNr按值,因此将在调用期间创建 vector 的拷贝。将其替换为 vector<int> const& intermediateLineNr ;它 同样有效。

关于c++ - MapReduce - 直接插入 map 中 vector<int> 的第一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15324808/

相关文章:

python - 在 python 中用字典翻译数据框

c++ - 哪个代码页用于 CStringA 到 CStringW 的隐式转换?

python - 获取当前函数参数的字典

c++ - 转类 "Interfaceable"

.net - 为什么 .Net 词典中的条目按顺序排列?

r - 如何在R中交换向量中的每两个元素?

c++ - 将 STL::vector 迭代器入口传递给函数

c++ - 完全释放 std::vector 容器的内存

c++ - 字符中的奇怪字符

c++ - `iterators` 和 `references to elements` 之间的区别