【发布时间】:2014-09-08 10:39:46
【问题描述】:
我正在尝试为以下无序映射编写排序算法。我已经看到this 的问题,我正在尝试为无序地图实现它,但它不起作用!
注意-我不能使用任何 STL 排序函数。
void quickSort(unordered_map<string, int> map, unordered_map<string, int>::iterator left,unordered_map<string, int>::iterator right) {
unordered_map<string, int>::iterator i=left;
unordered_map<string, int>::iterator j=right;
unordered_map<string, int>::iterator pivot = std::advance(map.begin(), map.size() / 2);
unordered_map<string, int> tmp;
}
int main(){
unordered_map<string, int> map;
map["blah"] = 2;
map["the"] = 5;
quickSort(map,map.begin(),map.end());
}
【问题讨论】:
-
您不能就地对
unordered_map进行排序。您需要将值转移到不同的容器(例如vector)。 -
@KonradRudolph 有什么理由吗?
-
只是出于好奇:为什么你根本不允许使用
std::sort()?这是某种家庭作业吗? -
@TobiMcNamobi 我想创建自己的排序算法,然后对其进行优化
-
@Bernard 原因是
unordered_map是无序的。如果您需要详细信息,请查看一些参考/实现。基本上,它使用散列,这使得修改内部存储变得不可能。
标签: c++ algorithm sorting stl unordered-map