[STL]List中,如何保证申请的内存不被释放掉?

lin_style 2010-06-28 02:23:41
比如,不断insert 100个后,然后释放,但是这100个空间不是真正的delete掉。

换个说法,我能手动管理List里面内存大小吗?比如vector可以reserve
...全文
188 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin_style 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 akirya 的回复:]
引用 14 楼 lin_style 的回复:

C/C++ code
list<int> L1, L2;
list<int>::iterator Ite_t;

L1.push_back(1);
L1.push_back(2);
L1.push_back(3);



好象不行,,我怎么把L1中的节点直接搬到L2中??

list::splice
[/Quote]

那很简单了啥,申明两个链表,不停的splice
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lin_style 的回复:]

C/C++ code
list<int> L1, L2;
list<int>::iterator Ite_t;

L1.push_back(1);
L1.push_back(2);
L1.push_back(3);



好象不行,,我怎么把L1中的节点直接搬到L2中??
[/Quote]
list::splice
lin_style 2010-06-28
  • 打赏
  • 举报
回复
算了,还是自个写吧
chenyu2202863 2010-06-28
  • 打赏
  • 举报
回复
这个跟allocator没关系~,是container没有公开释放内存的接口,因为在设计的时候,希望所有的容器都是在stack中,而不是堆中,所以离开作用域就可释放内存资源(不包括容器中保存的数据资源)
chenyu2202863 2010-06-28
  • 打赏
  • 举报
回复
L1离开作用域的时候就会释放它的节点内存~
还有,经典的swap方法可以
lin_style 2010-06-28
  • 打赏
  • 举报
回复
	list<int> L1, L2;
list<int>::iterator Ite_t;

L1.push_back(1);
L1.push_back(2);
L1.push_back(3);



好象不行,,我怎么把L1中的节点直接搬到L2中??
lin_style 2010-06-28
  • 打赏
  • 举报
回复
想了个方法,发现很容易就能做到。。哈哈哈哈。。果然是懒人。
pengzhixi 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lin_style 的回复:]
allocator实现复杂吗??找了半天没找到list的reserve.太复杂就自个写了,主要是懒啊。。
[/Quote]
list是不能reserve的
lin_style 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 akirya 的回复:]
居然是40分
这个还不如自己写个list
[/Quote]

问技术问题2分怕被大家扁
lin_style 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 linsen_519 的回复:]
引用楼主 lin_style 的回复:
比如,不断insert 100个后,然后释放,但是这100个空间不是真正的delete掉。

换个说法,我能手动管理List里面内存大小吗?比如vector可以reserve


既然你已经有能力实现了链表~ 那么再实现一下你自己想要的 reserve有何难呢?
[/Quote]

主要是懒啊。。
lin_style 2010-06-28
  • 打赏
  • 举报
回复
allocator实现复杂吗??找了半天没找到list的reserve.太复杂就自个写了,主要是懒啊。。
linsen_519 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 lin_style 的回复:]
比如,不断insert 100个后,然后释放,但是这100个空间不是真正的delete掉。

换个说法,我能手动管理List里面内存大小吗?比如vector可以reserve
[/Quote]

既然你已经有能力实现了链表~ 那么再实现一下你自己想要的 reserve有何难呢?
失落的凡凡 2010-06-28
  • 打赏
  • 举报
回复
标准里似乎没有提供这个“预留内存”的功能, 你想实现的效果可能得由allocator这一级实现
  • 打赏
  • 举报
回复
居然是40分
这个还不如自己写个list
失落的凡凡 2010-06-28
  • 打赏
  • 举报
回复
这个要看allocator的行为吧
lin_style 2010-06-28
  • 打赏
  • 举报
回复
不是,我问的就是list内部的对象所占用的内存
luxiaoshuai 2010-06-28
  • 打赏
  • 举报
回复
是啊,你删除的应该只是引用的指针,真实的内存数据并没有被删掉。
Luyi06292 2010-06-28
  • 打赏
  • 举报
回复
erase ? 这样 貌似 不会弄丢你的内存吧? 呵呵~
lin_style 2010-06-28
  • 打赏
  • 举报
回复
upupupupupup

64,683

社区成员

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

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