元<类 A,类 D>整 引序(整 i){//K为容器类型
静 整 I=0;如(i>I)I=i;中 I++;
}//设置引用的序号.避免重复.A为类型
//通过不同的<A,D>造不同的引序.
//A为类型,D为本引用位置区间.通过A,D来区分静
元<类 B,整 I,类 D>B&造引(){//多加一个
整 t=引序<B,D>(I);断定(I>=t);静 B a;中 a;
}//先类后类型//如何使I不能相同呢?
元<类 A,类 B,整 I,类 D>动&映引(){
中 造引<无序映<A,B>,I,D>();
}//主要是为了方便取名字.不用可恶的`->`
元<类 A,整 I,类 D>动&量引(){
中 造引<向量<A>,I,D>();
}
元<类 A,整 I,类 D>动&集引(){
中 造引<无序集<A>,I,D>();
}//D用来表示本引用放置位置
//方便造引用.
用 T=无序集<串>;
类 B{//这样只能造一个引用.
//如何限制为`B`类局部呢
T&语=集引<串,0,B>(),&列=集引<串,1,B>();
串&啊=造引<串,0,B>(),&呀=造引<串,1,B>();
//T&列=语;
公:
空 切换(T&a,T&b){
语=a;列=b;
打印大小(语,列);
打印(语);
打印(列);
}
空 切换(串&a,串&b){
啊=a;呀=b;
打印大小(啊,呀);
打印(啊);
打印(呀);
}
};
类 E{//这样只能造一个引用.
//如何限制为`B`类局部呢
T&语=集引<串,0,E>(),&列=集引<串,1,E>();
串&啊=造引<串,0,E>(),&呀=造引<串,1,E>();
};
构 D{
串 s;
};
//差别是4/12,4/32的区别.
空 主(){
T c{"啊"},d{"啊","呀"};
B b;b.切换(c,d);
打印("---");
b.切换(d,c);
串 m{"只只只"},n{"呀只"};
打印("---");
b.切换(m,n);
打印("---");
E e;
打印(型长(B),型长(E),型长(D));
}