Array of Vectors C++
Array of Vectors C++
如果"no_vertices"的值大于2,我将得到分割错误。代码如下
vector<int> a[no_vertices];
for(int i=1;i<=no_vertices-1;i++)
{
int v1,v2;
cin>>v1>>v2;
a[v1].push_back(v2);
a[v2].push_back(v1);
}
我正在尝试使用邻接表制作一个双向图。所以我试着用一个向量数组。但是,在输入所有值后,即在for循环结束后,我在控制台中得到分段错误。
由于输入值用于索引,因此每次迭代的输入值必须在0到no_vertices
-1的范围内。
否则会出现未定义行为。
以这种方式直接使用输入值不是一个好主意。添加验证输入值的逻辑。也就是说,它们在要求的范围内
你需要这样做:
vector<vector<int>> a(no_vertices, vector<int>());
for (int i = 0; i < no_vertices; i++)
{
int v1, v2;
cin >> v1 >> v2;
if (v1 < 0 || v1 >= no_vertices || v2 < 0 || v2 >= no_vertices)
{
cout << "incorrect value!" << endl;
continue;
}
a[v1].push_back(v2);
a[v2].push_back(v1);
}
确保您的v1和v2值在范围内:[0, no_vertices - 1]
相关文章:
- Codecademy - Vectors: Operations
- 是否可以跨 dll 边界返回常量引用/指向 std::vectors?
- 你能初始化unique_ptrs "static const vectors"吗?(C++17 与 GCC 7.3)
- C 是否具有对两个STD :: sets,vectors等进行三角比较的标准方法
- 为什么此范围为Vectors求和的实现速度较慢
- C++ STL Vectors
- 无需额外复制即可存储和访问 deque<vectors> 缓冲区 (c++)?
- 了解std ::交换指针和std :: vectors
- C++ iStream, If-Else & Vectors
- C++,ANTLR and VECTORS
- 迭代一个巨大的 std::vector of std::vectors 并修改元素
- 创建一个动态分配的std::vectors数组
- 在 boost::spirit 中使用 auto_ 表达式和 std::vectors
- 是 std::vectors 线程安全的
- 如何"concatenate"提升::mpl::vectors
- std::vector of std::vectors contiguity
- Vectors in Arduino
- 如何在不使用std::vectors的情况下,使用运算符==从动态分配的对象数组中删除元素
- Vectors of lock_guards
- c++ vectors and push_back