你如何在地图中排序?
我尝试过排序(myMap.begin()
,myMap.end()
),但它不起作用,我已经想在互联网上找到答案,但没有网站解释如何使用排序地图特别。和bdw我的地图有整数和它们的字母表示。
int main(){
map<int,string> m;
// add integers at the end of the map
m.insert(pair<int,string>(2,"Two"));
m.insert(pair<int,string>(3,"Three"));
m.insert(pair<int,string>(4,"Four"));
m.insert(pair<int,string>(7,"Seven"));
m.insert(pair<int,string>(5,"Five"));
cout<<"Finding minimum value from map"<<endl;
map<int,string>::const_iterator it3;
it3 = min_element(m.begin(),m.end());
cout<<"The minimum value in the vector is "<<it3->first<<","<<it3->second<<endl;
cout<<endl<<endl;
cout<<"Sorting array.."<<endl;
sort(m.begin(),m.end());
cout<<"Array after sorting.."<<endl;
cout << "The size of v is: " << m.size() << "\nThe capacity of v is: ";
cout<<m.max_size() <<endl;
cout<<"The content of v is:";
for (it3 = m.begin(); it3 != m.end(); it3++){
cout << it3->first << "," << it3->second << endl;
}
cout<<endl<<endl;
return 0;
}
答案 0 :(得分:5)
地图按键排序;你无法改变它。
如果您想按键排序,那么您不需要做任何事情。如果您想按值或其他标准排序,那么您将需要另一种数据结构。
答案 1 :(得分:4)
C++ maps通常实现为高度平衡二叉搜索树。但总的来说,无论用于实现地图的数据结构是什么,地图背后的主要思想是它已经被密钥排序。所以用键明确排序是没有意义的。如果要按值排序,可以使用其他数据结构,如存储反向映射等。
答案 2 :(得分:3)
默认情况下,地图已经过排序,因此您无需自行排序。默认情况下,如果您遍历std::map
,则从std::map
实现{@ 1}}之后,您将获得从最低到最高的元素:
template<
class Key,
class T,
class Compare = std::less<Key>,
class Allocator = std::allocator<std::pair<const Key, T> >
> class map;
使用std::less<key>
作为排序的默认比较器,如果您想以不同的方式对其进行排序,只需将其声明为
std::map<Key, Value, Comparator>
而不是
std::map<Key, Value>