对大数据量(5w左右条记录)如何选择stl容器 如题,我有5万条记录,我目前是存储在vector<ClassA>,然后按照某个关键字排序(用的是STL的sort排序),但是改成vector<ClassA*> 速度稍有改进,还是不能满足要求,是不是我容器选错了,求各位高人指点,这些记录没有重复值,只是做一个排序操作,后续就是按照读入的记录访问就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 后续就是按照读入的记录访问就可以, 如果这样可以用map应该更好些 用map好一些,二叉树的效率高一些。。但是要键值唯一性 容器可以使用reserve(似乎是),预先分配一部分,同时 设置分配粒度.比如当前满了 则再扩展N个,而不是1个1个扩展.vector 内部的数据格式 和数组一样. 程序再操作时 比如更新是先申请 原元素个数N+1 的内存,然后把原内容复制,过去,然后再删除原内存,数据量大用reserve预先分配可以节约很多次内存从新分配和释放 应该可以改善情况. 就用vector<class*>类型,自己写个堆排序,我这有代码http://blog.csdn.net/zipper9527/article/details/6107107,你可以参考,速度上不会有问题的,排序是交换指针,不调用拷贝构造函数,已经很快了。另外map好像不支持排序参数,内部顺序是自动的。 速度稍有不能满足要求,问题不明确。如果是排序速度不够,那么用list。如果是查询速度不够,那么用vector,查询速度没有方法比vector折半查找更快。 排序很慢,同样的数据JAVA版本ArrayList.sort排序速度,与我改成C++版本后相比,C++明显慢很多! 如果stl解决不了。网上有一个Qsort的代码,排1000万个int用时1秒,5wan个class数据,如果排序指针,也就是瞬间的事了。 大数据量,自个用数组处理,安心。stl容器,效率难保证 vs2008中,MFC中,菜单项标题不显示\t以后的内容 DirectShow触发全屏播放问题 求教一个TCP select模型的问题 Http下载问题 sscanf问题? CListCtrl的字体颜色问题 巨急::提取XML中的内容,形成一个字符串(请高手指点,谢谢) CListView的显示问题,在线等待…… CDateTimeCtrl问题求助 请教下有人知道怎么在VS2012的帮助文档中添加windowSDK帮助文档 请教UDP收不到数据包的问题? 我怎么感觉软件编程没有止境啊?
vector 内部的数据格式 和数组一样. 程序再操作时 比如更新
是先申请 原元素个数N+1 的内存,然后把原内容复制,过去,然后再删除原内存,数据量大用reserve预先分配
可以节约很多次内存从新分配和释放 应该可以改善情况.
如果是排序速度不够,那么用list。
如果是查询速度不够,那么用vector,查询速度没有方法比vector折半查找更快。
网上有一个Qsort的代码,排1000万个int用时1秒,
5wan个class数据,如果排序指针,也就是瞬间的事了。
stl容器,效率难保证