【C/C++】vector建图
时间: 2024-10-26 09:01:00 浏览: 46
在C/C++中,使用`std::vector`构建图通常涉及到邻接表数据结构,因为`vector`非常适合存储动态数组,对于表示稀疏图(即边的数量远小于顶点数量的平方)特别有效。以下是创建简单无向图的一种常见方法:
1. 定义顶点和边的数据结构:
```cpp
#include <vector>
#include <unordered_map>
// 定义一个结构体来表示顶点
struct Vertex {
int id;
std::vector<int> neighbors; // 用vector存储邻居顶点的ID
};
// 如果需要存储权重,可以添加另一个成员变量
struct WeightedVertex {
int id;
std::vector<std::pair<int, int>> neighbors; // 存储边及其权重
};
```
2. 创建顶点集合并连接边:
```cpp
std::vector<Vertex> vertices;
vertices.push_back({0}); // 添加第一个顶点
// 连接边
vertices[0].neighbors.push_back(1); // 从顶点0到顶点1有边
// 可以继续添加更多的顶点和边...
// 对于加权图,可以使用WeightedVertex结构,并记录边的权重
vertices.push_back({1});
vertices[0].neighbors.push_back(std::make_pair(1, 5)); // 从顶点0到顶点1,权重为5
```
阅读全文