ویرایش
اگر index ها بصورت random هستن به این شکل که نوشتین اشتباهه چون مثلا اگر index داخلش 1 باشه و یک آرایه 10 عضوی داشته باشین اندیسی که می خواین پاک کنین منفی میشه و هم این که عناصر اشتباه پاک میشن
اگر راندوم هستن شاید بهتر باشه که اصلا از vector استفاده نکنین از list استفاده کنین (برای a )
برای این که کد بالا همیشه درست کار کنه باید index ها sort هم بشن قبلش و تکراری هم داخلشون نداشته باشید که بهترین راه به نظر من برای این کار استفاده از set به جای vector ایندکس ها هستش که هر 2تا ویژگی بالا رو داره
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <random>
using namespace std;
int main()
{
vector<int> a(100);
for (int i = 0; i < 100; i++)
a[i] = i;
const int count = 5;
set<int> indexs;
for (int i = 0; i < count; i++)
indexs.emplace(rand()%60);
int j=0;
for (auto i = indexs.begin(); i != indexs.end(); ++i,j++)
a.erase(a.begin() + (*i -j) );
}