题解:
#include<bits/stdc++.h>
using namespace std;
string str;
map<string,vector<int> > mp;//数组名到变长数组的映射
void qingkong()
{
int pos=str.find("=",0);//查找 必须是查找字符串 不能是字符
string name=str.substr(0,pos);//部分截取 从0开始pos个 这是个巧合
mp[name]=vector<int>();//******非常少见的用法 给mp[name]赋予一个新的vector<int>()
//不管原来有没有,强行初始化
}
void append()
{
int pos=str.find(".",0);
string name=str.substr(0,pos);//提取名字
int num=0;
pos=str.find("(",0);
int end=str.find(")",0);
for(int i=pos+1;i<end;i++)
num=num*10+str[i]-'0';//生成整数
mp[name].push_back(num);//压入可变数组
}
void sortt()
{
int pos=str.find(".",0);
string name=str.substr(0,pos);//提取名字
sort(mp[name].begin(),mp[name].end());//默认是升序
}
void shuchu()
{
int pos=str.find("[",0);
string name=str.substr(0,pos);//提取名字
int end=str.find("]",0);
int num=0;
for(int i=pos+1;i<end;i++)
num=num*10+str[i]-'0';//生成整数(下标)
if(num<mp[name].size()) cout<<mp[name][num]<<endl;//注意输出
else cout<<"ERROR"<<endl;
}
int main()
{
//freopen("kkk.txt","r",stdin);//?????????????
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
while(n--)
{
cin>>str;
int k=0;
if(str.find("[]",0)!=-1) {qingkong();continue;}
if(str.find("append",0)!=-1) {append();continue;}
if(str.find("sort",0)!=-1) {sortt();continue;}
shuchu();
}
}
return 0;
}