C++中的“操作符失配”错误

C++中的“操作符失配”错误,c++,c++11,graph,C++,C++11,Graph,我正在创建图v的转置,并将其保存在g2中。v和g2都是相同的类型,因此g2将保持图形的转置 下面,v是向量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

我正在创建图v的转置,并将其保存在g2中。v和g2都是相同的类型,因此g2将保持图形的转置

下面,v是向量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);
    ^    
你们能帮帮我吗

vector<int> g2[10000];
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[u].push_back(*it);
      }
}

我希望这会有所帮助。

问题在于g2[v[*it]]*它是int-ok类型的。v[*it]是std::vector类型,您试图将其用作数组g2的索引,对于数组g2,索引只能是整数类型,而不是int向量。这就是问题所在。如果不知道你为什么要喋喋不休地讲这些代码,或者你试图通过喋喋不休地讲这些代码来达到什么目的,没有人能就你需要做什么提供建议。在互联网上读心术是一种非常罕见的技能。哦,对不起,我没有补充这一点。实际上,我正在创建图v的转置,并将其保存在g2中。v和g2都是同一类型的,所以g2将保留图形的转置。对不起,兄弟,我没有投反对票。这里我想创建一个图v的转置,并将其保存在g2中。但我认为你的代码只会创建一个v的副本?对不起,我刚才没提到转置!