| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 961 人关注过本帖
标题:关于容器动态增长的问题
取消只看楼主 加入收藏
doom5211
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-6-7
收藏
 问题点数:0 回复次数:1 
关于容器动态增长的问题
vector容器的动态增长是新分配一个内存区,把原来已经被包含在容器中的元素拷贝到新分配的内存区中,再把原来的存储区释放.对于大型复杂类对象,插入一个此元素进vector中容器的容量为1,这意味着要是再动态增加一个复杂类对象元素,会重新分配一个容量为现在两倍的存储区,再把元素拷贝到新存储区,最后再释放原存储区.
这样容器的性能很低,因为每次动态增加一个元素,都要调用对象的拷贝构造函数和析构函数(在释放原存储区时用到),对此有一种解决方案是用指针间接存储复杂类对象,这样增加用指针指代的复杂类对象时,容器的容量会从1增加到256,这样就避免了每次都要重新分配新存储区.
问题是为什么用指针后容器容量会从1增加到256? 书上说只有容器存储int类对象时容器容量才会为256.
不知道说清楚没有?这个问题是 C++ primer第三版中 第6章 抽象容器类型第6.3节中出现的. 大虾帮忙解释一下.
搜索更多相关主题的帖子: 容器 动态 内存 元素 容量 
2007-07-01 13:01
doom5211
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-6-7
收藏
得分:0 
无限循环说的好,我就是不确定指针是否也占四个字节这个地方
其他地方都基本上弄懂了.另外用指针就如同用内置类型一样这一点也是我不知道的.
所以谢谢了.

2007-07-02 17:22
快速回复:关于容器动态增长的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015862 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved