想问问某句话的意思,不知道会不会被鄙视和侮辱?

李刚弄死他 2014-03-14 03:27:51
如果你将shared_ptr存放于一个容器中,而后不再需要全部元素,而只使用其中一部分,要记得用erase删除不再需要的那些元素。
这句话什么意思?
...全文
618 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
乐乐呵呵小海 2014-08-09
  • 打赏
  • 举报
回复
这个帖子让我学习了,我也是看到这卡着了一阵子
李刚弄死他 2014-03-16
  • 打赏
  • 举报
回复
引用 34 楼 line_us 的回复:
脑子有点疼,明天再看。
今天再来看一下,脑子还是疼。
幻夢之葉 2014-03-15
  • 打赏
  • 举报
回复
鄙视和侮辱? 不怕菜的人只怕自大和不肯学习的人!! 因为水平低也是可以慢慢成长的,谁不是这样开始的?!
line_us 2014-03-15
  • 打赏
  • 举报
回复
脑子有点疼,明天再看。
derekrose 2014-03-14
  • 打赏
  • 举报
回复
引用 32 楼 u011774561 的回复:
[quote=引用 30 楼 derekrose 的回复:] [quote=引用 28 楼 u011774561 的回复:] [quote=引用 27 楼 derekrose 的回复:] [quote=引用 26 楼 u011774561 的回复:] [quote=引用 24 楼 derekrose 的回复:] [quote=引用 22 楼 u011774561 的回复:] [quote=引用 21 楼 derekrose 的回复:] [quote=引用 19 楼 u011774561 的回复:] [quote=引用 18 楼 derekrose 的回复:] [quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。[/quote] 因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了 继续问 应该是学生吧 学生能够持续提出问题是非常可贵的[/quote] erase不是不能释放内存吗,那删除了指针有什么用?另外,即使不用shared_ptr,我也可以用erase来删除元素啊,如果这个元素是多余的吗,和shared_ptr有什么相干?[/quote] erase不能释放内存? erase可以释放存在容器之中的内存,如果容器保存的是raw指针,是无法释放指针指向的内存,但是我们用的是shared_ptr,这就是他的优点[/quote] 我的意思是这句话:由于在最后一个shared_ptr销毁前内存都不会释放,保证shared_ptr在无用之后不再保留就非常重要了。没有在这个案例中体现出来。[/quote] 怎么能没体现出来呢? 如果容器里面的元素的指针引用计数并不是1,有可能是2,3,4,你erase之后引用计数会自减1,如果你一直不erase,那么所引用的对象将一直存在内存之中直到容器被销毁。[/quote] 如果就是说这点事的话,那这本书有点啰嗦,这不是废话吗[/quote] 而且后面隐藏的知识点非常丰富怎么会是废话呢? 1.首先你要知道为什么容器里面要使用指针,而不是对象本身 2.为什么要使用shared_ptr 3.erase的行为对普通对象,指针,智能指针都做了些什么 4.shared_ptr的原理 5.还介绍了一个可以提高效率的记忆点[/quote] 脑子有点疼,明天再看。[/quote]
李刚弄死他 2014-03-14
  • 打赏
  • 举报
回复
引用 30 楼 derekrose 的回复:
[quote=引用 28 楼 u011774561 的回复:] [quote=引用 27 楼 derekrose 的回复:] [quote=引用 26 楼 u011774561 的回复:] [quote=引用 24 楼 derekrose 的回复:] [quote=引用 22 楼 u011774561 的回复:] [quote=引用 21 楼 derekrose 的回复:] [quote=引用 19 楼 u011774561 的回复:] [quote=引用 18 楼 derekrose 的回复:] [quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。[/quote] 因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了 继续问 应该是学生吧 学生能够持续提出问题是非常可贵的[/quote] erase不是不能释放内存吗,那删除了指针有什么用?另外,即使不用shared_ptr,我也可以用erase来删除元素啊,如果这个元素是多余的吗,和shared_ptr有什么相干?[/quote] erase不能释放内存? erase可以释放存在容器之中的内存,如果容器保存的是raw指针,是无法释放指针指向的内存,但是我们用的是shared_ptr,这就是他的优点[/quote] 我的意思是这句话:由于在最后一个shared_ptr销毁前内存都不会释放,保证shared_ptr在无用之后不再保留就非常重要了。没有在这个案例中体现出来。[/quote] 怎么能没体现出来呢? 如果容器里面的元素的指针引用计数并不是1,有可能是2,3,4,你erase之后引用计数会自减1,如果你一直不erase,那么所引用的对象将一直存在内存之中直到容器被销毁。[/quote] 如果就是说这点事的话,那这本书有点啰嗦,这不是废话吗[/quote] 而且后面隐藏的知识点非常丰富怎么会是废话呢? 1.首先你要知道为什么容器里面要使用指针,而不是对象本身 2.为什么要使用shared_ptr 3.erase的行为对普通对象,指针,智能指针都做了些什么 4.shared_ptr的原理 5.还介绍了一个可以提高效率的记忆点[/quote] 脑子有点疼,明天再看。
勤奋的小游侠 2014-03-14
  • 打赏
  • 举报
回复
我觉得书本说得很详细明白啊,shared_ptr不用了,你就要删掉它啊. 假如你一开始是用容器保存shared_ptr的,你不用了你还把它放在容器里做什么?你容器保存一个指针,却搞到整个对象都不能被释放。 前面是理论,后面是例子,我觉得书本说得很清楚。
derekrose 2014-03-14
  • 打赏
  • 举报
回复
引用 28 楼 u011774561 的回复:
[quote=引用 27 楼 derekrose 的回复:] [quote=引用 26 楼 u011774561 的回复:] [quote=引用 24 楼 derekrose 的回复:] [quote=引用 22 楼 u011774561 的回复:] [quote=引用 21 楼 derekrose 的回复:] [quote=引用 19 楼 u011774561 的回复:] [quote=引用 18 楼 derekrose 的回复:] [quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。[/quote] 因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了 继续问 应该是学生吧 学生能够持续提出问题是非常可贵的[/quote] erase不是不能释放内存吗,那删除了指针有什么用?另外,即使不用shared_ptr,我也可以用erase来删除元素啊,如果这个元素是多余的吗,和shared_ptr有什么相干?[/quote] erase不能释放内存? erase可以释放存在容器之中的内存,如果容器保存的是raw指针,是无法释放指针指向的内存,但是我们用的是shared_ptr,这就是他的优点[/quote] 我的意思是这句话:由于在最后一个shared_ptr销毁前内存都不会释放,保证shared_ptr在无用之后不再保留就非常重要了。没有在这个案例中体现出来。[/quote] 怎么能没体现出来呢? 如果容器里面的元素的指针引用计数并不是1,有可能是2,3,4,你erase之后引用计数会自减1,如果你一直不erase,那么所引用的对象将一直存在内存之中直到容器被销毁。[/quote] 如果就是说这点事的话,那这本书有点啰嗦,这不是废话吗[/quote] 而且后面隐藏的知识点非常丰富怎么会是废话呢? 1.首先你要知道为什么容器里面要使用指针,而不是对象本身 2.为什么要使用shared_ptr 3.erase的行为对普通对象,指针,智能指针都做了些什么 4.shared_ptr的原理 5.还介绍了一个可以提高效率的记忆点
derekrose 2014-03-14
  • 打赏
  • 举报
回复
由于在最后一个shared_ptr销毁前内存都不会释放,保证shared_ptr在无用之后不再保留就非常重要了。如果你忘记了销毁程序不再需要的shared_ptr,程序仍会正确执行,但会浪费内存。shared_ptr在无用之后仍然保留的一种可能情况是,你将shared_ptr存放在一个容器中,随后重排了容器,从而不再需要某些元素,在这种情况下,你应该确保用erase删除那些不再需要的shared_ptr元素。 “由于在最后一个shared_ptr销毁前内存都不会释放,保证shared_ptr在无用之后不再保留就非常重要了”主题思想,原因及结论。 “如果你忘记了销毁程序不再需要的shared_ptr,程序仍会正确执行,但会浪费内存。” 不做的后果,加深记忆用 “shared_ptr在无用之后仍然保留的一种可能情况是,你将shared_ptr存放在一个容器中,随后重排了容器,从而不再需要某些元素,在这种情况下,你应该确保用erase删除那些不再需要的shared_ptr元素。” 例子,但是很明显这里给你造成了误导,作者的意图可能是写给一些有一些项目经验的人,可能你还有欠缺。 就三句话而已 其实不罗嗦 而且如果是,他们有可能还会感觉非常少。
李刚弄死他 2014-03-14
  • 打赏
  • 举报
回复
引用 27 楼 derekrose 的回复:
[quote=引用 26 楼 u011774561 的回复:] [quote=引用 24 楼 derekrose 的回复:] [quote=引用 22 楼 u011774561 的回复:] [quote=引用 21 楼 derekrose 的回复:] [quote=引用 19 楼 u011774561 的回复:] [quote=引用 18 楼 derekrose 的回复:] [quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。[/quote] 因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了 继续问 应该是学生吧 学生能够持续提出问题是非常可贵的[/quote] erase不是不能释放内存吗,那删除了指针有什么用?另外,即使不用shared_ptr,我也可以用erase来删除元素啊,如果这个元素是多余的吗,和shared_ptr有什么相干?[/quote] erase不能释放内存? erase可以释放存在容器之中的内存,如果容器保存的是raw指针,是无法释放指针指向的内存,但是我们用的是shared_ptr,这就是他的优点[/quote] 我的意思是这句话:由于在最后一个shared_ptr销毁前内存都不会释放,保证shared_ptr在无用之后不再保留就非常重要了。没有在这个案例中体现出来。[/quote] 怎么能没体现出来呢? 如果容器里面的元素的指针引用计数并不是1,有可能是2,3,4,你erase之后引用计数会自减1,如果你一直不erase,那么所引用的对象将一直存在内存之中直到容器被销毁。[/quote] 如果就是说这点事的话,那这本书有点啰嗦,这不是废话吗
derekrose 2014-03-14
  • 打赏
  • 举报
回复
引用 26 楼 u011774561 的回复:
[quote=引用 24 楼 derekrose 的回复:] [quote=引用 22 楼 u011774561 的回复:] [quote=引用 21 楼 derekrose 的回复:] [quote=引用 19 楼 u011774561 的回复:] [quote=引用 18 楼 derekrose 的回复:] [quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。[/quote] 因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了 继续问 应该是学生吧 学生能够持续提出问题是非常可贵的[/quote] erase不是不能释放内存吗,那删除了指针有什么用?另外,即使不用shared_ptr,我也可以用erase来删除元素啊,如果这个元素是多余的吗,和shared_ptr有什么相干?[/quote] erase不能释放内存? erase可以释放存在容器之中的内存,如果容器保存的是raw指针,是无法释放指针指向的内存,但是我们用的是shared_ptr,这就是他的优点[/quote] 我的意思是这句话:由于在最后一个shared_ptr销毁前内存都不会释放,保证shared_ptr在无用之后不再保留就非常重要了。没有在这个案例中体现出来。[/quote] 怎么能没体现出来呢? 如果容器里面的元素的指针引用计数并不是1,有可能是2,3,4,你erase之后引用计数会自减1,如果你一直不erase,那么所引用的对象将一直存在内存之中直到容器被销毁。
李刚弄死他 2014-03-14
  • 打赏
  • 举报
回复
引用 24 楼 derekrose 的回复:
[quote=引用 22 楼 u011774561 的回复:] [quote=引用 21 楼 derekrose 的回复:] [quote=引用 19 楼 u011774561 的回复:] [quote=引用 18 楼 derekrose 的回复:] [quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。[/quote] 因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了 继续问 应该是学生吧 学生能够持续提出问题是非常可贵的[/quote] erase不是不能释放内存吗,那删除了指针有什么用?另外,即使不用shared_ptr,我也可以用erase来删除元素啊,如果这个元素是多余的吗,和shared_ptr有什么相干?[/quote] erase不能释放内存? erase可以释放存在容器之中的内存,如果容器保存的是raw指针,是无法释放指针指向的内存,但是我们用的是shared_ptr,这就是他的优点[/quote] 我的意思是这句话:由于在最后一个shared_ptr销毁前内存都不会释放,保证shared_ptr在无用之后不再保留就非常重要了。没有在这个案例中体现出来。
李刚弄死他 2014-03-14
  • 打赏
  • 举报
回复
引用 24 楼 derekrose 的回复:
[quote=引用 22 楼 u011774561 的回复:] [quote=引用 21 楼 derekrose 的回复:] [quote=引用 19 楼 u011774561 的回复:] [quote=引用 18 楼 derekrose 的回复:] [quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。[/quote] 因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了 继续问 应该是学生吧 学生能够持续提出问题是非常可贵的[/quote] erase不是不能释放内存吗,那删除了指针有什么用?另外,即使不用shared_ptr,我也可以用erase来删除元素啊,如果这个元素是多余的吗,和shared_ptr有什么相干?[/quote] erase不能释放内存? erase可以释放存在容器之中的内存,如果容器保存的是raw指针,是无法释放指针指向的内存,但是我们用的是shared_ptr,这就是他的优点[/quote] erase确实不能释放内存?swap可以有效的释放,目前C++11建议使用shrink_to_fit,但也是建议编译器释放,释放不释放还是看编译器和具体情况而定。shared_ptr的特点在这个案例中没有体现出来。
derekrose 2014-03-14
  • 打赏
  • 举报
回复
引用 22 楼 u011774561 的回复:
[quote=引用 21 楼 derekrose 的回复:] [quote=引用 19 楼 u011774561 的回复:] [quote=引用 18 楼 derekrose 的回复:] [quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。[/quote] 因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了 继续问 应该是学生吧 学生能够持续提出问题是非常可贵的[/quote] erase不是不能释放内存吗,那删除了指针有什么用?另外,即使不用shared_ptr,我也可以用erase来删除元素啊,如果这个元素是多余的吗,和shared_ptr有什么相干?[/quote] erase不能释放内存? erase可以释放存在容器之中的内存,如果容器保存的是raw指针,是无法释放指针指向的内存,但是我们用的是shared_ptr,这就是他的优点
jiandingzhe 2014-03-14
  • 打赏
  • 举报
回复
引用 楼主 u011774561 的回复:
如果你将shared_ptr存放于一个容器中,而后不再需要全部元素,而只使用其中一部分,要记得用erase删除不再需要的那些元素。 这句话什么意思?
我觉得这句话有点废话:不用的时候当然要删除。 就好比说“如果你饿了,请一定记得吃饭”,“如果你便便完,请一定记得擦PP”
李刚弄死他 2014-03-14
  • 打赏
  • 举报
回复
引用 21 楼 derekrose 的回复:
[quote=引用 19 楼 u011774561 的回复:] [quote=引用 18 楼 derekrose 的回复:] [quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。[/quote] 因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了 继续问 应该是学生吧 学生能够持续提出问题是非常可贵的[/quote] erase不是不能释放内存吗,那删除了指针有什么用?另外,即使不用shared_ptr,我也可以用erase来删除元素啊,如果这个元素是多余的吗,和shared_ptr有什么相干?
derekrose 2014-03-14
  • 打赏
  • 举报
回复
引用 19 楼 u011774561 的回复:
[quote=引用 18 楼 derekrose 的回复:] [quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。[/quote] 因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了 继续问 应该是学生吧 学生能够持续提出问题是非常可贵的
shiguojie19892 2014-03-14
  • 打赏
  • 举报
回复
就是调用删除函数,删除不需要的部分啊
李刚弄死他 2014-03-14
  • 打赏
  • 举报
回复
引用 18 楼 derekrose 的回复:
[quote=引用 17 楼 u011774561 的回复:] [quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote] 那为何不直接排列数据,非要排列指针指向的数据。
derekrose 2014-03-14
  • 打赏
  • 举报
回复
引用 17 楼 u011774561 的回复:
[quote=引用 16 楼 derekrose 的回复:] [quote=引用 15 楼 u011774561 的回复:] [quote=引用 14 楼 derekrose 的回复:] [quote=引用 13 楼 u011774561 的回复:] [quote=引用 12 楼 derekrose 的回复:] 目的就是节省内存
我也知道他说的是什么,但是没有实例,会感觉不太真实。[/quote] 不真实??什么叫不真实[/quote] 你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote] 指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote] 也可以重排指针指向的目标?[/quote] 重排指针即可,可以以指针指向数据的任何域为key进行排序
加载更多回复(17)

65,208

社区成员

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

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