0
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()に変更しました。 –
そのトリックをした –