繁体   English   中英

在 C++ 中使用 std::maps 进行排序

[英]Sorting with std::maps in c++

std::map使用什么排序算法? 使用std::map对一组键和与其关联的一些值进行排序而不是将键值存储在“std::vector>”中并使用排序函数是否有效?

简而言之,排序在性能方面更好:

std::map<int,int> a;
//insert some key-values
for(std::map<int,int>::iterator it=a.begin();it!=a.end();it++)
       std::cout<<it->first<<" "<<it->second<<endl;

对比

std::vector<pair<int,int>> a;
//insert some data into a
sort(a.begin(),a.end())
int size= a.size()
for(i=0;i<size;i++)
   std::cout<<it->first<<" "<<it->second<<endl;

如果您只想对键进行排序,请使用 std::set。 这是一张没有任何“价值”的地图。

这是否是一个好主意取决于您的数据集。 对于小数据集,这是完全合理的。

地图与平衡二叉搜索树的一些口味(AVL,红黑树等)来实现。

不,使用地图简单地对一组值进行排序是没有效率的,除非它们有某种关联,还有其他几种排序算法可以做到这一点,这取决于您的数据集、分布等。

也看看std::sort

使用 std::map 通过将这些值存储在键中来对一组值进行排序并对与这些键关联的值使用一些虚拟文字?

我不是建议您执行上述操作,但是用例已经有一个storing those values in keys的数据结构

它被称为std::Set

std::map 使用什么排序算法?

由于它是作为平衡二叉搜索树实现的,如果您进行中序遍历,键就已经被排序了。

但是没有访问 std::map 实例的“实际树结构”的标准方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM