我试图扭转向量的顺序。 我写了两个函数并尝试在程序中调用它们。当我运行该程序时,我收到一条错误说: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;
}
答案 0 :(得分:0)
在你while
循环的第一次迭代中,在这行代码中:
intList[first] = intList[last];
您正在访问超出范围的intList[last]
。
顺便说一下,另一个问题是这一行:
while (first < 4)
应写的:
while (first <= last-1)