65,209
社区成员
发帖
与我相关
我的任务
分享
[/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]

[/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]
你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/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]
指针指向一个对象,比如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]
你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/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]
指针指向一个对象,比如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]
你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/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的特点在这个案例中没有体现出来。
[/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]
你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote]
指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote]
也可以重排指针指向的目标?[/quote]
重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote]
那为何不直接排列数据,非要排列指针指向的数据。[/quote]
因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了
继续问 应该是学生吧 学生能够持续提出问题是非常可贵的[/quote]
erase不是不能释放内存吗,那删除了指针有什么用?另外,即使不用shared_ptr,我也可以用erase来删除元素啊,如果这个元素是多余的吗,和shared_ptr有什么相干?
[/quote]
你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote]
指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote]
也可以重排指针指向的目标?[/quote]
重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote]
那为何不直接排列数据,非要排列指针指向的数据。[/quote]
因为容器里面存的是指针,为什么存指针呢,为了避免copy造成的系统消耗,为什么不直接排列数据呢,因为我们一开始的设计就是利用指针来寻数据,其实排列指针指向的数据也就是相当于直接排列数据了
继续问 应该是学生吧 学生能够持续提出问题是非常可贵的
[/quote]
你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote]
指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote]
也可以重排指针指向的目标?[/quote]
重排指针即可,可以以指针指向数据的任何域为key进行排序[/quote]
那为何不直接排列数据,非要排列指针指向的数据。
[/quote]
你想容器中都是指针,你对指针重排有什么意义,而且重排后还有的不需要,这个可就很难理解了。[/quote]
指针指向一个对象,比如Person对象,我以Person的Age属性进行排序,我只选年龄最大的100个Person,后面的全部erase掉。[/quote]
也可以重排指针指向的目标?[/quote]
重排指针即可,可以以指针指向数据的任何域为key进行排序