删除向量的向量中的向量
Deleting a vector in vector of vectors C++
我已经创建了一个由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;
}
我想知道从向量的向量中删除向量的好方法
分割失败来自于这样一个事实,即您不断选择从0到199的随机数,但adjacency_list
向量的大小正在迅速减少,因此当您选择random
的越界值时,这只是时间问题。
解决方案当然是从0到adjacency_list.size()-1
随机选择,但我建议只是随机选择2行来保留,复制它们,然后扔掉整个adjacency_list
,因为std::向量与那些随机重复删除不太好。
相关文章:
- 迭代时从向量和内存中删除对象
- 如何在向量中删除 std::function<void()>?
- 移除和删除与向量中的条件匹配的指针
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 为什么通过 vector<reference_wrapper> 的元素删除引用的值<T>不会使向量无效?
- 如何在元组初始化向量中删除样板?
- 如何删除包含其他向量的向量?
- 从列表向量中删除无法按预期工作
- 从数组中删除非唯一值、保持顺序和不使用向量的最佳方法?
- 如何删除除 ArduinoSTL 的向量函数之外的所有函数
- 如何在具有特定条件的向量中删除所有元组?
- 删除指向抽象类的指针向量
- 从自定义数据类型向量中删除重复元素
- 防止我的向量在调用它的函数结束时被删除
- 从ints向量删除int的问题
- 使用find_if从向量删除所有偶数数字
- 崩溃,如果使用向量删除了一个嵌入式容器的destructor中删除char*成员
- 从向量删除重复元素
- 基元向量删除引发异常
- 如何使用指向每个元素的指针向量删除qcheckbox数组?