求助看个问题
struct Maixu
{
int sid; //id
std::list<int> userlist: //队列
int validTime; //预定时间,每个结构不一样,平均5分钟左右,以秒为单位
int leftTime; //剩余时间,以秒为单位
};
其中队列userlist中每一项都在预定的时间validTime后出队,比如当前队列是{1,2,3},validTime是5秒,则5秒后1出列,队列变为{2,3},再过5秒2出队,队列变为{3},相应的实现代码如下:
std::vector<Maixu> m_maixus; /*这个vector长度最多可以达到100000*/
void Timer() //Timer函数每秒运行一次
{
for(std::vector<Maixu>::iterator it = m_maixus.begin();
it !=m_maixus.end();++it)
{
if(it->userlist.empty())
continue;
if(--it->leftTime == 0)
{
//时间到
it->userlist.pop_front();
it->leftTime = it->validTime;
//其他操作
}
}
}
请问上面的实现方式有没有什么问题?如何改进?请提出你的改进方案并重写上面的代码段。
{
int sid; //id
std::list<int> userlist: //队列
int validTime; //预定时间,每个结构不一样,平均5分钟左右,以秒为单位
int leftTime; //剩余时间,以秒为单位
};
其中队列userlist中每一项都在预定的时间validTime后出队,比如当前队列是{1,2,3},validTime是5秒,则5秒后1出列,队列变为{2,3},再过5秒2出队,队列变为{3},相应的实现代码如下:
std::vector<Maixu> m_maixus; /*这个vector长度最多可以达到100000*/
void Timer() //Timer函数每秒运行一次
{
for(std::vector<Maixu>::iterator it = m_maixus.begin();
it !=m_maixus.end();++it)
{
if(it->userlist.empty())
continue;
if(--it->leftTime == 0)
{
//时间到
it->userlist.pop_front();
it->leftTime = it->validTime;
//其他操作
}
}
}
请问上面的实现方式有没有什么问题?如何改进?请提出你的改进方案并重写上面的代码段。
...全文
相关推荐
紧急求助关于SVM调用问题-SVMcgForRegress.m
紧急求助关于SVM调用问题-SVMcgForRegress.m 每次调用svm都会报错导致程序中断,求大神能帮调试下,小弟已经弄1下午了……也求助过老师TOT都没成功~谢谢了先
31、Ubuntu 技术问题求助全攻略
本文详细介绍了在使用Ubuntu系统过程中遇到技术问题时的求助方法,包括利用Linux内置文档(man页面、info页面和README文件)自行解决问题的技巧,以及在无法解决时如何通过论坛、邮件列表和官方网站等渠道在线求助。文章还提供了具体的解决流程示例,帮助用户更高效地应对Ubuntu使用中的各类技术难题。
求助各位大虾关于itae积分指标实现的问题-heatexdemo.m
求助各位大虾关于itae积分指标实现的问题-heatexdemo.m 这个在matlab里面怎么实现阿 ! 比如用pid去控制一个最简单的一阶惯性环节! 用这个itae指标去优化pid的参数 这个怎么弄 具体步骤 向各位大虾求助了阿
紧急求助关于SVM调用问题-SVMcg.m
紧急求助关于SVM调用问题-SVMcg.m 每次调用svm都会报错导致程序中断,求大神能帮调试下,小弟已经弄1下午了……也求助过老师TOT都没成功~谢谢了先
紧急求助关于SVM调用问题-chapter14.m
紧急求助关于SVM调用问题-chapter14.m 每次调用svm都会报错导致程序中断,求大神能帮调试下,小弟已经弄1下午了……也求助过老师TOT都没成功~谢谢了先


