C++ 如何在地图中使用排序?

C++ 如何在地图中使用排序?,c++,C++,如何在地图中排序? 我尝试过对myMap.begin、myMap.end进行排序,但不起作用,我也尝试过在internet上查找答案,但没有网站专门解释如何对地图使用排序。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

如何在地图中排序? 我尝试过对myMap.begin、myMap.end进行排序,但不起作用,我也尝试过在internet上查找答案,但没有网站专门解释如何对地图使用排序。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;
}

通常实现为高度平衡的二进制搜索树。但一般来说,无论用于实现映射的数据结构是什么,映射背后的主要思想是它已经按键排序。因此,按键显式排序毫无意义。如果要按值排序,可以使用其他数据结构,如存储反向映射等。

映射按键排序;你不能改变这一点


如果要按键排序,则无需执行任何操作。如果要按值或其他标准进行排序,则需要另一个数据结构。

默认情况下,地图已排序,因此无需自行排序。默认情况下,如果您遍历std::map,则会从最低到最高获取元素,因为std::map的实现方式如下:

template<
    class Key,
    class T,
    class Compare = std::less<Key>,
    class Allocator = std::allocator<std::pair<const Key, T> >
> class map;
使用std::less作为排序的默认比较器,如果您希望以不同的方式对其进行排序,只需将其声明为

std::map<Key, Value, Comparator>
而不是

std::map<Key, Value>

您使用的是什么类型的地图?根据定义,标准映射会根据其键自动排序,除非您使用的是无序的_mapstd::map已按键排序。你想要什么?等等,我会评论这个代码,如果你使用普通的地图,试着用值来排序它是没有意义的,如果你想这样做的话,你应该考虑一个像向量一样的非关联容器,基本上你不能重新排序一个地图。它对任何改变键的东西进行排序。如果您想使用某种容器来存储对,并且希望在右边的值上排序,那么我建议您使用向量,或者将映射的顺序交换为映射,它将为您自动排序其他实现是可能的;重要的一点是它们是有序的。通常,映射的其他实现是可能的。但该网站称C++中的地图通常是用二进制搜索树来实现的。1。我知道就accuract而言,cplusplus.com没有最好的声誉。2.地图的高度平衡搜索树表示保证了任何操作在最坏情况下的Ologn时间。我认为没有更多的数据结构可以做到这一点。@JamesKanze:我可以很容易地想象高阶树和跳过列表。但是,让我们不要把这个论点拖得离主题太远——答案很好,现在它已经改进了。