编辑:我不能使用sort函数。 我必须做一个程序,其中有一个列表是生物的排名,每个生物都有自己的ID,排名必须按儿子数量逐渐排序,如果两个生物有相同数量的儿子,他们的ID越来越多。 。 在增加一个生物的儿子数量后,我做了以下算法:
list<pair<int, int> >::iterator it = list.begin();
bool found = false;
int id = (id of the incremented organism)
int sons = (number of sons)
while(not found and it != list.end()) {
if((*it).first == id) found = true;
if(found and it != rkg.begin()) {
--it;
int prevsons = (*it).first;
int previd = (*it).second;
++it;
if(prevsons < sons or prevsons == sons and previd > id) {
it = list.erase(it);
while(((*it).second < sons or (*it).second == sons and (*it).first > id) and it != list.end) --it;
list.insert(it, id);
}
}
++it;
}
但它不能很好地工作,因为当我插入一些生物后打印排名时,它有时是严重排序。 我很感激你的帮助。 我只能使用以下操作:
void list.clear();
void list.insert(iterator it, const T& x);
iterator list.erase(iterator it);
void splice(iterator it, list& l);
int size() const;
对不起,如果我表达的很糟糕,我的母语不是英语。
答案 0 :(得分:0)
我终于修复了它,我忘了在插入元素之前增加迭代器 中加入:
if(it == list.begin() and not ((*it).second < sons or (*it).second == sons and (*it).first > id) or it != rkg.begin()) ++it;