C++ 创建std::vector对象C+时出错+;
我已经使用STL一段时间了,但今天我遇到了以下错误: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
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]在那里。