下面的代码应该删除向量中的重复值。
例如,如果载体包含{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
它已超载,但未在矢量中分配空间。 –