Следующий код должен удалять повторяющиеся значения в векторе.
Например, если вектор содержит {1,5,3,3}
, результат должен быть {1,5,3}
.Ошибка отладки. 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 (п);' Перед начиная цикл. –
Оператор [] перегружен, если он не ошибается? – user3322385
Он перегружен, но не выделяет пространство в векторе. –