使用(adj.size(),0);“?,c++,vector"/>

首页 > 解决方案 > 线-"矢量是什么意思使用(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);”的含义。谁能解释一下。

标签: c++vector

解决方案


vector<int> used(adj.size(), 0);

used这声明了一个类型的局部变量,该变量使用带有 a和 anvector<int>的两个参数的构造函数进行初始化。vectorsize_tint

这是通用描述;要了解细节,您需要知道构造函数std::vector是什么。特别是有

vector::vector(size_type n, const T& value, const Allocator& = Allocator());

这将匹配,它构造一个指定大小的向量,用指定元素值的副本初始化所有元素。


推荐阅读