在C++中对一个结构的向量进行排序的问题。

问题描述 投票:0回答:1

所以我基本上是想做一个函数,根据任务的优先级对一个叫做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);

    }
}
c++ sorting vector struct
1个回答
0
投票

在这里,我的程序在给定的向量中有两个或更多的项目时就会崩溃,不知道是什么原因。auto j = i++; 你没有在增量之后检查 i 是否是 tasks_list.end() 。

你在 for 中检查得很好,但在这里也要检查,因为你要递增迭代器。

© www.soinside.com 2019 - 2024. All rights reserved.