列表 iter 不取消引用 使用列表进行插入排序
list iter not dereferancable insertion sort using lists
我正在尝试使用 STL 中的列表实现插入排序。我收到此错误(我在哪里评论了它(。如何修复此错误并使插入排序工作。任何帮助将不胜感激!
void insertion_sort(list<int> &li) {
int i, j, key;
bool insertionNeeded = false;
list<int>::iterator itr = li.begin();
for (j = 1; j < li.size(); j++) {
advance(itr, j);
key = *itr;
insertionNeeded = false;
for (i = j - 1; i >= 0; i--) { // larger values move right
advance(itr, i);
if (key < i) {
advance(itr, i + 1);
int temp1 = *itr;
advance(itr, i);
int temp2 = *itr;
temp1 = temp2;
insertionNeeded = true;
}
else
break;
}
if (insertionNeeded)
advance(itr, i + 1);
*itr = key; //i get an error here
}
}
itr
在各种条件下在代码中前进了五倍。
advance(itr, j); //first for loop, j can be equal to li.size()-1
advance(itr, i); //second for loop, i can be equal to j-1
advance(itr, i + 1); //first if conditional, i can be equal to j-1
advance(itr, i); //first if conditional, i can be equal to j-1
advance(itr, i + 1); //second if conditional, i can be equal to j-1
多次推进迭代器最终会导致递增不可递增的迭代器(过去结束迭代器(。这会导致根据文档定义的行为。
相关文章:
- 试图在c++中对数字列表进行排序
- 在STL - C++中按成绩对学生列表进行排序?
- 这是插入排序的正确实现吗?
- 使用列表 STL 递归进行插入排序
- 列表 iter 不取消引用 使用列表进行插入排序
- 如何使插入排序更快?
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 插入排序的最小交换
- 如何按键对 std::对列表进行排序?
- 如何使用cpp编写选择排序算法以降序对元素列表进行排序?
- 双链表C++上的插入排序
- 如何在插入排序中使用 replace() 使语句变得不必要
- C++插入排序错误功能不起作用
- 按升序对列表进行排序,C++使用气泡排序
- 如何在不通过插入排序更改原始矢量的情况下对 2D 矢量进行排序
- 使用不遵循"严格弱排序"的比较功能对列表进行排序
- 插入排序打印错误的输出
- 对unique_ptrs列表进行排序
- 插入排序以对链接列表中的节点进行排序
- 在双链接列表中排序插入