刚开始学C++,做题看题解的时候遇到一个不懂的代码,希望各位能教教我。代码如下:
#include <bits/stdc++.h>
#define int long long
using namespace std;
pair<pair <char,int>,int> a[500005];
int ans[500005];
signed main(int argc, char** argv)
{
ios::sync_with_stdio(false);
cin.tie(0);
int T;
cin >> T;
while(T--)
{
int n;
cin >> n;
for(int i=1;i<=n;i++)
cin >> a[i].first.second;
for(int i=1;i<=n;i++)
cin >> a[i].first.first;
for(int i=1;i<=n;i++)
a[i].second=i;
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
ans[a[i].second]=i;
for(int i=1;i<=n;i++)
cout << ans[i] << " ";
cout << "\n";
}
return 0;
}
主要是想知道:
1、signed main(int argc, char** argv) 是什么意思呀
2、ios::sync_with_stdio(false);
cin.tie(0);
这两行又是什么呀?是必须的吗?
3、看到题解后,我补充了一点的 pair<> 知识,所以想知道 sort() 是按照哪个对象进行的从小到大排序哇?
main函数啊,程序入口函数
https://www.jb51.net/article/231543.htm
https://blog.csdn.net/king9666/article/details/103949090
https://blog.csdn.net/qian2213762498/article/details/81773289
(1)signed main(int argc, char** argv) 这句话,signed表示返回值是有符号数,argc表示命令行参数的个数(含程序名),argv是参数字符串数组(argv[0]是程序名)
(2)ios::sync_with_stdio(false);cin.tie(0);
这段语句可以来打消iostream的输入 输出缓存,可以节省许多时间,主要用来提升输入输出效率,一般可以省略。
(3)pair排序的时候,用key来排序,这个代码中是双层pair,所以最后用char这个字段来排序。
定义主函数,返回值是一个无符号整形,argc是参数个数,argv是参数数组,可以多个参数。
signed main(int argc, char** argv)