编辑:我不能使用排序功能。我必须做一个程序,它有一个有机体排名列表,每个有机体都有自己的 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;
对不起,如果我表达自己不好,我的母语不是英语。