【PAT甲级】1039 Course List for Student (25 分)(vector嵌套于map,段错误原因未知)

题意:

输入两个正整数N和K(N<=40000,K<=2500),分别为学生和课程的数量。接下来输入K门课的信息,先输入每门课的ID再输入有多少学生选了这门课,接下来输入学生们的ID。最后N次询问,输入学生的ID输出该学生选了多少们课,输出所选课程的数量,按照递增序输出课程的ID。

trick:

第5个数据点出现段错误,把原本以map存学生对应ID再映射vector存储该学生所选课程改成vector嵌套在map内,就没有段错误的问题出现,疑似映射过程中指针漂移???

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 unordered_map<string,vector<int> >name;
 5 string s;
 6 int main(){
 7     ios::sync_with_stdio(false);
 8     cin.tie(NULL);
 9     cout.tie(NULL);
10     int n,k;
11     cin>>n>>k;
12     int x,num;
13     int cnt=0;
14     for(int i=1;i<=k;++i){
15         cin>>x>>num;
16         for(int j=1;j<=num;++j){
17             cin>>s;
18             if(name.find(s)==name.end())
19                 name[s]=vector<int>{x};
20             else
21                 name[s].push_back(x);
22         }
23     }
24     string ss;
25     for(int i=1;i<=n;++i){
26         cin>>ss;
27         auto&idd=name[ss];
28         cout<<ss<<" "<<idd.size();
29         sort(idd.begin(),idd.end());
30         for(auto it:idd)
31             cout<<" "<<it;
32         cout<<"
";
33     }
34     return 0;
35 }
保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
原文地址:https://www.cnblogs.com/ldudxy/p/11588438.html