c++ - 线-"矢量是什么意思使用(adj.size(),0);“?
问题描述
实际上我必须对图的顶点进行拓扑排序。为此,我得到了下面给出的代码模板。
#include <iostream>
#include <algorithm>
#include <vector>
using std::vector;
using std::pair;
void dfs(vector<vector<int> > &adj, vector<int> &used, vector<int> &order, int x) {
//write your code here
}
vector<int> toposort(vector<vector<int> > adj) {
vector<int> used(adj.size(), 0);
vector<int> order;
//write your code here
return order;
}
int main() {
size_t n, m;
std::cin >> n >> m;
vector<vector<int> > adj(n, vector<int>());
for (size_t i = 0; i < m; i++) {
int x, y;
std::cin >> x >> y;
adj[x - 1].push_back(y - 1);
}
vector<int> order = toposort(adj);
for (size_t i = 0; i < order.size(); i++) {
std::cout << order[i] + 1 << " ";
}
}
我无法理解行“vector used(adj.size(), 0);”的含义。谁能解释一下。
解决方案
vector<int> used(adj.size(), 0);
used
这声明了一个类型的局部变量,该变量使用带有 a和 anvector<int>
的两个参数的构造函数进行初始化。vector
size_t
int
这是通用描述;要了解细节,您需要知道构造函数std::vector
是什么。特别是有
vector::vector(size_type n, const T& value, const Allocator& = Allocator());
这将匹配,它构造一个指定大小的向量,用指定元素值的副本初始化所有元素。
推荐阅读
- excel - VBA中的双For循环,不同的下标
- c# - c#为列表包含构建通用表达式树
- mysql - 在mysql查询中使用,在concat函数中分隔
- sapui5 - 在 SAP Fiori 启动板中多次显示单个应用程序磁贴
- python - 为什么这个循环不起作用,而类似的循环起作用?
- javascript - 使用 javascript 创建嵌入在表单中的元素
- leaflet - 图层控制:链接两个叠加层,移除叠加层 A 也会移除叠加层 B
- javascript - 启用要在 Bot 的弹出窗口中打开的链接
- java - Java:具有 ThreadPool 和 CountDownLatch 的 Dijkstra 算法导致越界异常
- java - 使用 fcm 进行通知时,onMessageReceived(RemoteMessage remoteMessage) firebase chat null 错误