矢量SubScript超出范围,如何解决?

时间:2018-04-12 07:57:17

标签: c++ debugging vector

我试图扭转向量的顺序。 我写了两个函数并尝试在程序中调用它们。当我运行该程序时,我收到一条错误说:Debug Assertion Failed,第1795行,向量下标超出范围。我不明白如何解决它。

这是我的代码:

#include <iostream>
#include <vector>

using namespace std;


void reverse(vector<int>& intList, int first, int last)
{
while (first < 4)
{
    int temp = intList[first];
    intList[first] = intList[last];
    intList[last] = temp;
    first++;
    last--;
}
}
void print(vector<int>& intList, int size)
{
for (int i = 0; i < size; i++)
    cout << intList[i] << " ";
cout << endl;
}

int main()
{
    vector<int> intList;                        //Line 1
int i;                                      //Line 2

intList.push_back(13);                      //Line 3
intList.push_back(75);                      //Line 4
intList.push_back(28);                      //Line 5
intList.push_back(35);                      //Line 6


reverse(intList, 0, 4); 
cout << "Reversed array is: " << endl;
print(intList, 5);



return 0;
}

1 个答案:

答案 0 :(得分:0)

在你while循环的第一次迭代中,在这行代码中:

intList[first] = intList[last];

您正在访问超出范围的intList[last]

顺便说一下,另一个问题是这一行:

while (first < 4)

应写的:

while (first <= last-1)