【发布时间】:2016-09-11 13:39:27
【问题描述】:
我创建了一个由 200 个顶点组成的邻接列表,每个向量对应于编号为 i 的行,其中包含与 i 共享一条边的所有顶点。我想从邻接列表中删除 198 个随机向量。但我收到分段错误错误
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;... 删除一些元素后随机值超出范围会发生什么? -
是的,将其更改为 rand()%adjacency_list.size()。
-
成功了
标签: c++ multidimensional-array vector