请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么要引入一个temp,直接clear为什么出错呢

WheelEntry tmp;
bq.front().swap(tmp);
bq.pop_front();
bq.push_back(WheelEntry());

这里开始的写法是直接bq.front().clear(),后面出现错误才改为的temp,这里直接clear为什么不行呢,unordered_set在clear的时候不是会调用对象的析构函数吗。
还是说,unordered_set是不会主动调用shared_ptr的析构?

正在回答

1回答

unordered_set在clear的时候不是会调用对象的析构函数,这是测试的时候发现的

0 回复 有任何疑惑可以回复我~
  • 提问者 BigBeautty #1
    感谢老师,刚才又试了一下,发现RunEvery 1秒的时候就会出现只被调用一次,而如果是大于1秒的,例如3秒5秒这种就可以正常运行,所以可能是因为clear之后,整个wheel[0]都会被清空,新加入的entry事件如果delay为1,那么恰好就是在wheel[0]的位置,所以就也跟着被清空了。
    回复 有任何疑惑可以回复我~ 2025-01-27 00:22:14
  • 直接pop_front()就好了呀,前两行都不要了。
    回复 有任何疑惑可以回复我~ 2025-08-15 21:31:11
  • 星辰黎明_hqyAK6 回复 提问者 BigBeautty #3
    回复 BigBeautty:我觉得逻辑上可以把-1都去掉
    回复 有任何疑惑可以回复我~ 2025-08-15 21:32:32
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号