2
私はグラフで動作するようになっている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;
}
私は別のベクトルを記入し、それを返すようにしようとしています。 ですから、例えば:私はデータ
0, 1
1, 2
1, 3
、戻り値は0, 1, 2, 3
ことshoul weak_component(g, 0)
callメソッドをテストグラフを埋めるかどう。 私の方法で何が間違っていますか? ありがとうございます。
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;
}
}
あなたがする必要がある場合を除き、インデックスを使用していないこの
'std :: fill(ret.begin()、ret.begin()'、おそらくここで何か間違っているかもしれませんよね? – Holt
@Holtなぜそう思うのですか? – Lemmy
['std :: fill'](http://www.cplusplus.com/reference/algorithm/fill/)には、 'first = last'があるので、何もしないのと同じように、空のシーケンスを埋めることになります。 – Holt