我有一组字符串.其中90%是URL的开头"http://www.".我想按字母顺序排序.
目前我使用C++ std :: sort().但是std :: sort是基于比较的快速排序的变体,并且比较具有长公共前缀的两个字符串是不有效的.但是(我认为)基数排序也不起作用,因为大多数字符串由于长公共前缀而放在同一个桶中.
对于这个问题,有没有比普通快速排序/基数排序更好的算法?
例如:
代码1:
if((iter = map.find(key)) != map.end()) {
return iter->second;
}
return 0;
Run Code Online (Sandbox Code Playgroud)
码2:
if(map.count(key) > 0) {
return map.at(key);
}
return 0;
Run Code Online (Sandbox Code Playgroud)
代码2是更简单的,但两者map.count()和map.at()成本O(LOGN)的时间.是否std::map提供了一个功能,可以将最后一个搜索项存储在缓存中并更快地搜索相同的项目,还是仅在整个地图中执行第二次搜索?