请稍等 ...
×

采纳答案成功!

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

为什么要引入一个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
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信