所以我基本上是想做一个函数,根据任务的优先级对一个叫做tasks的结构的向量进行排序。每当给定的向量有两个或更多的项目时,我的程序就会崩溃,不知道我的代码出了什么问题,请帮助我!谢谢!N
void sort_tasks(std::vector<tasks> &tasks_list)
{
if(!tasks_list.empty()){
bool result = false;
do
{
int counter = 0;
for(std::vector<tasks>::iterator i = tasks_list.begin(); i != tasks_list.end(); i++)
{
if(counter < tasks_list.size())
{
auto j = i++;
if(i->task_priority < j->task_priority) {
auto temp = *j;
*j = *i;
*i = temp;
if(!result) {
result = true;
}
}
}
counter++;
}
} while(result);
}
}
在这里,我的程序在给定的向量中有两个或更多的项目时就会崩溃,不知道是什么原因。auto j = i++;
你没有在增量之后检查 i 是否是 tasks_list.end() 。
你在 for 中检查得很好,但在这里也要检查,因为你要递增迭代器。