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

Posted ldudxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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内,就没有段错误的问题出现,疑似映射过程中指针漂移???

代码:

#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
unordered_map<string,vector<int> >name;
string s;
int main()
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,k;
cin>>n>>k;
int x,num;
int cnt=0;
for(int i=1;i<=k;++i)
cin>>x>>num;
for(int j=1;j<=num;++j)
cin>>s;
if(name.find(s)==name.end())
name[s]=vector<int>x;
else
name[s].push_back(x);


string ss;
for(int i=1;i<=n;++i)
cin>>ss;
auto&idd=name[ss];
cout<<ss<<" "<<idd.size();
sort(idd.begin(),idd.end());
for(auto it:idd)
cout<<" "<<it;
cout<<"\n";

return 0;

以上是关于PAT甲级1039 Course List for Student (25 分)(vector嵌套于map,段错误原因未知)的主要内容,如果未能解决你的问题,请参考以下文章

PAT 1039. Course List for Student

浙大pat1039 Course List for Student(25 分)

PAT Advanced 1039 Course List for Student (25分) (STL)

PAT1039. Course List for Student (25)

PAT (Advanced Level) 1039. Course List for Student (25)

PAT甲题题解-1039. Course List for Student (25)-建立映射+vector