我有一张以 pair 为索引的 map 。我发现访问其中的元素需要花费很多时间。我想知道是否有一些方法可以加速这个过程?我的代码如下:
std::vector words;
...to generate a words vector...
std::map<std::pair<std::string, std::string>, int> wordCountMap;
wordsSize = words.size()
for(int i = 0; i < wordsSize; ++i){
for(int j = i + 1; j < min(i + e, wordsSize); ++j){
std::pair<std::string, std::string> pk = words[i] < words[j] ? std::make_pair(words[i], words[j]) : std::make_pair(words[j], words[i]);
wordPairCountMap[pk] = wordPairCountMap.find(pk) != wordPairCountMap.end() ? wordPairCountMap[pk] + 1 : 1;
}
}
我发现pair indexed map的构建花费了很多时间。我该如何优化它?
最佳答案
++wordPairCountMap[pk];
可以代替
wordPairCountMap[pk] = wordPairCountMap.find(pk) != wordPairCountMap.end() ?
wordPairCountMap[pk] + 1 : 1;
避免额外的查找。
另请注意,您使用配对做了很多字符串复制
关于c++ - 如何在 C++ 中使用对索引加速映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40101861/