C++ 创建std::vector对象C+时出错+;

C++ 创建std::vector对象C+时出错+;,c++,graph,stl,vector,C++,Graph,Stl,Vector,我已经使用STL一段时间了,但今天我遇到了以下错误: error: no class template named 'rebind' in 'class std::vector<int, std::allocator> >' 错误:“class std::vector>中没有名为“rebind”的类模板” 在以下程序中: #include <algorithm> #include <cstdio> #include <cmath> #in

我已经使用STL一段时间了,但今天我遇到了以下错误:

error: no class template named 'rebind' in 'class std::vector<int, std::allocator> >'
错误:“class std::vector>中没有名为“rebind”的类模板”
在以下程序中:

#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <vector>
#include <bitset>
#include <climits>
#include <stack>
#include <cctype>
#include <sstream>
using namespace std;

vector<int, vector<int> > G[2000005];
vector<int, vector<int> > Grev[2000005];
int f[2000005], order[2000005], leader[2000005], t = 0, parent = 0;
bool explored[2000005];

void dfs_reverse(int i) {
    explored[i] = true;
    for(vi::iterator it=G[i].begin(); it != G[i].end(); it++)
        if(!explored[*it])
            dfs_reverse(*it);
    t++;
    f[i] = t;
}

void dfs(int i) {
    explored[i] = true;
    leader[i] = parent;
    for(vi::iterator it=G[i].begin(); it != G[i].end(); it++)
        if(!explored[*it])
            dfs(*it);
}

int main()  {
    int N, i, j, u, v;

    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);

    scanf("%d", &N);
    for(i=0; i<N; i++)  {
        scanf("%d %d", &u, &v);
        if(u > 0)   {
            if(v > 0)   {
                G[N + u].push_back(v); G[N + v].push_back(u);
                Grev[v].push_back(N + u); Grev[u].push_back(N + v);
            } else  {
                G[N + u].push_back(N - v); G[-v].push_back(u);
                Grev[N-v].push_back(N+u); Grev[u].push_back(-v);
            }
        } else  {
            if(v > 0)   {
                G[-u].push_back(v); G[N + v].push_back(N - u);
                Grev[v].push_back(-u); Grev[N-u].push_back(N+v);
            } else  {
                G[u].push_back(N - v); G[-v].push_back(N - u);
                Grev[N-v].push_back(u); Grev[N-u].push_back(-v);
            }
        }
    }

    memset(explored, false, 2000005*sizeof(bool));
    for(i=2*N; i>0; i--)    {
        if(!explored[i])
            dfs_reverse(i);
        order[f[i]] = i;
    }

    memset(explored, false, 2000005*sizeof(bool));
    for(i=2*N; i>0; i--)    {
        if(!explored[order[i]]) {
            parent = order[i];
            dfs(order[i]);
        }
    }

    for(i=1; i<=N; i++)
        if(leader[i] == leader[N+i])
            break;

    if(i <= N)
        printf("Unsatisfiable\n");
    else    printf("Satisfiable\n");

    return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
向量G[2000005];
向量Grev[2000005];
int f[2000005],订单[2000005],领导[2000005],t=0,上级=0;
布尔勘探[2000005];
无效dfs_反向(int i){
探索[i]=正确;
对于(vi::迭代器it=G[i].begin();it!=G[i].end();it++)
如果(!探索[*它])
dfs_反向(*it);
t++;
f[i]=t;
}
无效dfs(int i){
探索[i]=正确;
领导[i]=家长;
对于(vi::迭代器it=G[i].begin();it!=G[i].end();it++)
如果(!探索[*它])
dfs(*it);
}
int main(){
int N,i,j,u,v;
freopen(“input.txt”,“r”,stdin);
freopen(“output.txt”,“w”,stdout);
scanf(“%d”和“&N”);
对于(i=0;i=0){
如果(v>0){
G[N+u]。推回(v);G[N+v]。推回(u);
Grev[v]。推回(N+u);Grev[u]。推回(N+v);
}否则{
G[N+u]。推回(N-v);G[-v]。推回(u);
Grev[N-v]。向后推(N+u);Grev[u]。向后推(-v);
}
}否则{
如果(v>0){
G[-u]。推回(v);G[N+v]。推回(N-u);
Grev[v]。推回(-u);Grev[N-u]。推回(N+v);
}否则{
G[u]。推回(N-v);G[-v]。推回(N-u);
Grev[N-v]。向后推(u);Grev[N-u]。向后推(-v);
}
}
}
memset(探索,错误,200005*sizeof(bool));
对于(i=2*N;i>0;i--){
如果(!探索[i])
反向流动(i);
订单[f[i]]=i;
}
memset(探索,错误,200005*sizeof(bool));
对于(i=2*N;i>0;i--){
如果(!探索[订单[i]]){
父项=顺序[i];
dfs(订单[i]);
}
}

对于(i=1;i问题是
vector问题是
vector愚蠢的我!我需要向量G[200005]在那里。愚蠢的我!我需要向量G[200005]在那里。