当前位置:  开发笔记 > 编程语言 > 正文

动态排序的STL容器

如何解决《动态排序的STL容器》经验,为你挑选了2个好方法。

我对STL很新,所以我想知道是否有任何可动态排序的容器?目前我当前的想法是将矢量与各种排序算法结合使用,但我不确定是否有更合适的选择,因为(可能)线性复杂性将条目插入到排序向量中.

为了澄清"动态",我正在寻找一个容器,我可以在运行时修改排序顺序 - 例如按升序排序,然后按降序重新排序.



1> Doug T...:

你会想看看std :: map

std::map

映射基于为keyType提供的<运算符进行排序.

要么

std::set

还在模板参数的<运算符上排序,但不允许重复元素.

std::multiset

它与std :: set做同样的事情,但允许相同的元素.

我高度推荐Josuttis的"C++标准库"以获取更多信息.它是std库的最全面的概述,非常易读,并且充满了模糊和不那么模糊的信息.

此外,如26日中的第17条所述,Meyers的Effective Stl值得一读.



2> moswald..:

如果你知道你要按单个值升序和降序排序,那么set就是你的朋友.如果要在相反方向"排序",请使用反向迭代器.

如果您的对象很复杂,并且您将根据对象中的成员字段以多种不同方式进行排序,那么使用向量和排序可能会更好.尝试一次完成插入,然后调用一次排序.如果这不可行,那么对于大型对象集合,deque可能是比向量更好的选择.

我认为如果您对该级别的优化感兴趣,最好使用实际数据来分析您的代码.(这可能是这里任何人都可以给出的最佳建议:如果你只是在蓝月亮中做一次,那么你可以在每次插入后调用sort.)

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有