下面的代碼應該刪除向量中的重複值。
例如,如果載體包含{1,5,3,3}
,結果應該是{1,5,3}
。Debug斷言失敗.. C++向量下標超出範圍
該程序啓動,我輸入整數n*
。 然而,該程序引發以下錯誤:
Debug assertion failed.Program : ...\include\vector line:932 Expression:vector subscript out of range.
當我按下重試,VISUAL C++顯示一個新的窗口:
"try.exe has triggered a breakpoint".
然後,在我點擊繼續,出現另一個錯誤:
Debug Assertion Failed! Program :...\include\vector line:933 expression:"standart c++ libraries out of range" && 0
我的代碼如下:
#include <iostream>
#include <vector>
using namespace std;
void removeDup (vector<int>& v);
int main()
{
vector<int> v;
int i,n;
cin>>n;
for(i=0;i<n;i++){
v[i]=rand()%10;
}
removeDup(v);
for(i=0;i<n;i++)
{
cout<<v[i];
}
system("pause");
}
void removeDup(vector<int>& v)
{
int i,j,size;
size=v.size();
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
{
if(v[i]==v[j])
v.erase(v.begin()+j);
}
}
}
您可以選擇使用'v.push_back(蘭特()%10);'或'v.resize(N);'前開始循環。 –
如果我沒有弄錯,operator []是否超載? – user3322385
它已超載,但未在矢量中分配空間。 –