Я создал список смежности, состоящий из 200 вершин, каждый вектор соответствует нумерованной строке. I имеет все вершины, которые разделяют ребро с i. Я хочу удалить 198 случайных векторов из списка смежности. Но я получаю сообщение об ошибке ошибки сегментацииУдаление вектора в векторе векторов C++
void contract_edge(vector<vector<int> >&adjacency_list , int pos)
{
adjacency_list.erase(adjacency_list.begin()+pos);
}
int main()
{
vector<vector<int> > adjacency_list(200);
int size = 200;
while(size > 2)
{
int random = rand()%200;
contract_edge(adjacency_list,random);
size--;
}
return 0;
}
Я хотел бы знать, что является хорошим способом удалить вектор из вектора векторов.
'int random = rand()% 200;' ... Что происходит после удаления нескольких элементов, и случайное значение оказывается вне границ? –
yup изменил его на rand()% adjacency_list.size(). –
, который сделал трюк –