vector插入元素的效率问题

jerrykid 2007-04-26 11:25:47
遇到这样一个问题,如果vector中预先申请了100个元素空间,现在我要插入第101个元素,一般的实现是申请一个可以存放200个元素新的存储空间,然后复制已经有的元素,再插入新的元素,有没有更好的提高效率的实现办法,请大家指教!
...全文
894 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
longshanks 2007-04-26
  • 打赏
  • 举报
回复
理论上,可以利用cpu的分页机制。分页机制由硬件操作,只占用极少的时钟周期。而且,更重要的,它不需要将内存中的数据拷贝来拷贝去。
但是,凡事都有但是,分页机制是硬件特性,只特定于某个平台,所以没有可移植性。并不是所有的系统都支持分页内存,即便是支持,各系统的分页结构也不同。因此,一般在C++中不用这种机制。C++是坚决反对与平台绑定的。
但是如果你不必考虑移植性,便可以利用这个机制创建自己的Allocator,来提升性能。
在ms的OleDB Template中有一个CArrayRowset类,这个类就是利用Win32上的虚内存系统提高效率的。
chenyu2202863 2007-04-26
  • 打赏
  • 举报
回复
capacity,reserve
yoyo_alex_lw 2007-04-26
  • 打赏
  • 举报
回复
没有,鱼与熊掌不能兼得。不然,就不会有list等数据结构了
taodm 2007-04-26
  • 打赏
  • 举报
回复
这已经是最高效的方法了。
jerrykid 2007-04-26
  • 打赏
  • 举报
回复
我是举个例子说明一下,其实可以这样说,如果往vector中插入一个元素的时候发现vector预先申请的空间已经用完,除了系统默认的方法有没有其它高效的插入方法!
rainstormed 2007-04-26
  • 打赏
  • 举报
回复
可以不预申请空间,系统会自动增长
taodm 2007-04-26
  • 打赏
  • 举报
回复
那就当初预申请好200个嘛。
  • 打赏
  • 举报
回复
reserve成员函数

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧