gpt4 book ai didi

c++ - 打印 vector 图 vector 的弱分量

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:47:14 24 4
gpt4 key购买 nike

我正在编写一个必须处理图形的 C++ 程序。我对其中一种方法有点问题。所以,我的结构看起来像

struct graph {  
std::vector <std::vector<int>> gr;
};

而且我有一个方法必须返回源自顶点的弱组件内的顶点,并且只能使用现有顶点调用它。

这里是:

std::vector<int> weak_component(const graph& g, int vertex) {
std::vector<int> ret;
if (vertex >= 0 && vertex < g.gr.size()) {
for (std::vector<std::vector<int>>::size_type i = 0;
i < g.gr[vertex].size(); i++) {
for (std::vector<int>::size_type j = 0; j < g.gr[i].size(); j++) {
std::fill(ret.begin(), ret.begin(), g.gr[i][j]);
std::cout << vertex;
}
}
}
return ret;
}

我正在尝试填充另一个 vector 并将其返回。例如:如果我用数据填充测试图

 0, 1
1, 2
1, 3

调用方法weak_component(g, 0) 返回值应该是0, 1, 2, 3。我的方法做错了什么?感谢您的帮助。

最佳答案

改变这个:

    for (std::vector<std::vector<int>>::size_type i = 0; 
i < g.gr[vertex].size(); i++) {
for (std::vector<int>::size_type j = 0; j < g.gr[i].size(); j++) {
std::fill(ret.begin(), ret.begin(), g.gr[i][j]);
std::cout << vertex;
}
}

到:

    for (int adj : g.gr[vertex]) {
for (int elem : g.gr[adj]) {
ret.push_back(elem);
std::cout << vertex;
}
}

除非万不得已,否则不要使用索引。遍历范围。

您的fill 什么都不做。将其替换为 push_back 以向返回值添加内容。

我也想添加一个sortunique-erase 来清理它。

关于c++ - 打印 vector 图 vector 的弱分量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36164381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com