找回密码
 立即注册
收起左侧

最近一直在想这个问题,集合中清除某一个项?

5
回复
7560
查看
[复制链接]
累计签到:256 天
连续签到:1 天
来源: 2015-8-7 10:00:44 显示全部楼层 |阅读模式
5Qter豆
本帖最后由 z55716368 于 2015-8-7 10:07 编辑

集合中装的是某一个类的指针,很多很多很多。
那么有时候对这个集合进行操作,添加和删除。
删除的话 我现在用的是removeat(i);
这样就感觉有个问题,remove只是把这个i的对象移除,但是i的对象本身应该是还存在的,
所以 我想问问要如何清除集合中的某个项(我知道在集合中的位置/下标),连内存也给他清除掉?
谢谢 是在是没有找到方法、、、
我有一个想法是这样
delete drivers->at(i);drivers->removeAt(i);

最佳答案

查看完整内容

如果集合中保存的是堆对象,必须要这么做阿,没有别的方法阿。 int i; list->add(&i); 这个直接remove就可以了。 如果是int *i = new i; list->add(i); 这样必须要先delete,然后再remove阿。要不内存泄漏了阿。
回复

使用道具 举报

累计签到:49 天
连续签到:1 天
2015-8-7 10:00:45 显示全部楼层
如果集合中保存的是堆对象,必须要这么做阿,没有别的方法阿。
int i;
list->add(&i);
这个直接remove就可以了。

如果是int *i = new i;
list->add(i);
这样必须要先delete,然后再remove阿。要不内存泄漏了阿。

点评

我在深入问一下 如果有同一类的很多数据,我使用他们的指针将他们装在集合中,A集合是全部数据,B集合只有其中的一半 然后通过对A的removeat删除了一些数据,那么如果删除了B集合中有的,B还能访问吗 如果不能访问  详情 回复 发表于 2015-8-7 15:19
哦 就是说实例化对象的话直接remove 然后指针集合的话就要delete以及remove 保证内存安全  详情 回复 发表于 2015-8-7 11:42
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-7 11:42:54 显示全部楼层
xiaodong60606 发表于 2015-8-7 11:23
如果集合中保存的是堆对象,必须要这么做阿,没有别的方法阿。
int i;
list->add(&i);

哦 就是说实例化对象的话直接remove 然后指针集合的话就要delete以及remove 保证内存安全
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-7 15:19:14 显示全部楼层
xiaodong60606 发表于 2015-8-7 10:00
如果集合中保存的是堆对象,必须要这么做阿,没有别的方法阿。
int i;
list->add(&i);

我在深入问一下
如果有同一类的很多数据,我使用他们的指针将他们装在集合中,A集合是全部数据,B集合只有其中的一半
然后通过对A的removeat删除了一些数据,那么如果删除了B集合中有的,B还能访问吗
如果不能访问,那么B集合要怎么正确访问其中的数据?
回复

使用道具 举报

累计签到:49 天
连续签到:1 天
2015-8-9 09:52:46 显示全部楼层
z55716368 发表于 2015-8-7 15:19
我在深入问一下
如果有同一类的很多数据,我使用他们的指针将他们装在集合中,A集合是全部数据,B集合只 ...

添加引用次数,或者智能指针,如果这你都不知道,那我也没办法了。

点评

好吧 我确实不知道你说的这两点 我先去看看这个用法 谢谢  详情 回复 发表于 2015-8-10 08:36
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-10 08:36:57 显示全部楼层
xiaodong60606 发表于 2015-8-9 09:52
添加引用次数,或者智能指针,如果这你都不知道,那我也没办法了。

好吧 我确实不知道你说的这两点 我先去看看这个用法 谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了