rt,怎么让他不CE
#include<bits/stdc++.h>
using namespace std;
template<typename SB>
struct BList{//Bi-directional Linked List双向链表
struct value{SB v;int las,net;};
int front,back,index,n;
vector<value> List;
BList(){
List.clear();
List.push_back({0,0,0});
List.push_back({0,0,2});
List.push_back({0,1,0});
front=1,back=2,n=2,index=0;
}
BList(int len,SB func){
List.clear();
List.push_back({0,0,0});
List.push_back({0,0,2});
List.push_back({0,1,0});
front=1,back=2,n=2,index=0;
while(len--)add_back(func);
}
BList(BList<SB> &BList2){List=BList2.List,front=BList2.front,back=BList2.back,index=BList2.index,n=BList2.n;}
BList(vector<SB> &vec){
List.clear();
List.push_back({0,0,0});
List.push_back({0,0,2});
List.push_back({0,1,0});
front=1,back=2,n=2,index=0;
for(int i=vec.size-1;i>=0;i--)add_front(vec[i]);
}
const SB operator+=(SB val){
List.push_back({val,List[back].las,back}),n++;
List[List[back].las].net=n;
List[back].las=n;
}
inline void add_back(SB val){
List.push_back({val,List[back].las,back}),n++;
List[List[back].las].net=n;
List[back].las=n;
}
inline void add_front(SB val){
List.push_back({val,front,List[front].net}),n++;
List[List[front].net].las=n;
List[front].net=n;
}
inline void add_index_back(SB val,int index){
List.push_back({val,index,List[index].net}),n++;
List[List[index].net].las=n;
List[index].net=n;
}
inline void add_index_front(SB val,int index){
List.push_back({val,List[index].las,index}),n++;
List[List[index].las].net=n;
List[index].las=n;
}
inline void omit_index(int index){//断开链接
if(List[List[index].las].net==index)List[List[index].las].net=List[index].net;
if(List[List[index].net].las==index)List[List[index].net].las=List[index].las;
}
inline void erasure_index(int index){//彻底删除
omit_index(index);
swap(List[index],List[n]);
List.pop_back(),n--;
}
const value &operator[](int index){return List[index];}
// SB operator+=(SB &val){
// List.push_back({val,List[back].las,back}),n++;
// List[List[back].las].net=n;
// List[back].las=n;
// }
// void operator-=(SB val){erasure_index(List[back].las);}
// BList<SB> operator-(int index){
// BList
// }
};
template<typename SB>
istream &operator>>(istream &in,BList<SB> &a){
a.init();
int n,func;
in>>n;
for(int i=1;i<=n;i++)in>>func,a.add_back(func);
return in;
}
template<typename SB>
ostream &operator<<(ostream &out,BList<SB> &a){
a.index=a[a.front].net;
while(a[a.index].net){
out<<a[a.index].v<<' ';
a.index=a[a.index].net;
}
out<<endl;
return out;
}
BList<int> fuc={1,2,3,4};
signed main(){
cout<<fuc;
return 0;
}