在增加一个元素后对列表进行排序
Sort a list after incrementing one element
编辑:我不能使用排序函数。我必须做一个程序,它有一个生物体的排序列表,每个生物体都有自己的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;
很抱歉,如果我表达得不好,我的母语不是英语。
我终于修复了它,我忘记了在插入元素之前增加迭代器添加:
if(it == list.begin() and not ((*it).second < sons or (*it).second == sons and (*it).first > id) or it != rkg.begin()) ++it;
相关文章:
- 试图在c++中对数字列表进行排序
- 在STL - C++中按成绩对学生列表进行排序?
- 使用列表 STL 递归进行插入排序
- 列表 iter 不取消引用 使用列表进行插入排序
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 如何按键对 std::对列表进行排序?
- 如何通过保持第一个插入的位置来对列表中插入的其余元素进行排序?
- 如何使用cpp编写选择排序算法以降序对元素列表进行排序?
- 使用自定义比较函数在类内进行列表排序
- 列表::排序更改值C
- 对于列表排序,有没有办法使用相同的参数让多个运算符重载?
- 在 c++ 中将数字从列表排序到数组中的气泡排序问题
- 运算符<用于列表排序
- C++列表排序功能
- C++ STL 算法(列表排序)OpenMP/多线程实现
- 列表排序不正确
- 列表排序和结构体向量排序之间的性能差距.c++
- 对抽象数据类型的stl::列表排序
- C++std列表排序使用自定义比较器,该比较器依赖于对象实例的成员变量