【发布时间】:2018-06-30 11:56:23
【问题描述】:
我正在创建图形v 的转置并将其保存在g2 中。 v 和g2 都是同一种类型,所以g2 会保存图的转置。
下面,v 属于vector<int>v[1000]。它由一个图的邻接表表示。
vector<int> v[10000] = ...; // input: some matrix
vector<int> g2[10000]; // output: transposed matrix
for(int u=0;u<N;u++) //N is the number of vertices
for(vector<int>::iterator it=v[u].begin();it!=v[u].end();it++)
g2[v[*it]].push_back(u);
我收到此错误:
prog.cpp:74:8: error: no match for 'operator[]' (operand types are 'std::vector<int> [10001]' and 'std::vector<int>')
g2[v[*it]].push_back(u);
^
你们能帮帮我吗?
【问题讨论】:
-
问题是
g2[v[*it]]。*it是int类型(好的)。v[*it]是std::vector<int>类型,您正试图将其用作数组g2的索引,其索引只能是整数类型,而不是int的向量。那就是问题所在。在不知道你为什么匆匆写下这段代码的情况下,或者你想通过匆匆写下它来达到什么目的的情况下,没有人可以就你需要做什么提供建议(通过互联网读心是一项非常罕见的技能)。 -
抱歉,我没有添加。实际上我正在创建图 v 的转置并将其保存在 g2 中。 v 和 g2 都是相同的类型,所以 g2 将保持图形的转置(我认为)。