【发布时间】:2018-10-14 21:54:54
【问题描述】:
所以我正在尝试将这个向量代码修改为列表。我了解向量,但对列表来说相当新。这是我迄今为止尝试过的,我该如何解决这个问题请告诉我。 这是原始向量代码:
void insertion_sort(std::vector <int> &num) {
int i, j, key;
bool insertionNeeded = false;
for (j = 1; j < num.size(); j++) {
key = num[j];
insertionNeeded = false;
for (i = j - 1; i >= 0; i--) { // larger values move right
if (key < num[i]) {
num[i + 1] = num[i];
insertionNeeded = true;
}
else
break;
}
if (insertionNeeded)
num[i + 1] = key; //Put key into its proper location
}
}
这是我尝试转换为列表的代码: 运行时出现错误
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;
}
}
【问题讨论】:
-
那么,你遇到了什么错误?
-
iter 不可取消引用
-
你从哪里得到它?来吧。你必须在这里帮助我们。
-
if (insertionNeeded) Advance(itr, i + 1); *itr = 键; //这里
-
我是列表新手,所以我需要帮助将代码从向量转换为列表
标签: c++ c++11 insertion-sort