queue队列内存分配的问题

isam 2004-08-09 10:08:08
如果我有定义了
class user
{
queue <ticket> t_q;
};
然后又定义了
vector <user> v_uses
在使用时我调用 t_q.push_back(t1);
这样 v_users 的内存分配是不是会受影响?使用是会不会出错?
...全文
440 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
isam 2004-08-10
  • 打赏
  • 举报
回复
多谢大侠!我自己写了例子试了没问题,现在又有理论基础了,嘻嘻,谢了!
Jinhao 2004-08-09
  • 打赏
  • 举报
回复
不会,vector和queue等等这些标准容器的存放元素的空间都在另外的地方,而不是在v_uses里,v_uses里有个指向存放元素空间的指针与之关联
RookieStar 2004-08-09
  • 打赏
  • 举报
回复
强烈同意楼上两位的观点。
对t_q内部元素的存储都是通过指针来实现的,因为这样能保证内存的动态分配,而对于t_q这个对象,它本身建立在栈上,其控制存储的那个指针本身是固定的,但指向的内存区域是随着操作的变化而改变的,故对安插user类对象的上层容器vector来说,该user类对象的属性域t_q的那个指针本身在内存中的位置是固定不变的,变的是指向的内容(在内存空间的其他地方)。

关于容器类的实现可以看看《STL源码剖析》
freefalcon 2004-08-09
  • 打赏
  • 举报
回复
一种类型所占的(栈)空间大小是固定的,可以用sizeof得到,这里queue内部的内存分配(动态分配,位于堆上)不会对父类有影响

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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