Note:
-
printf函数输出字符串是针对char *的,即printf只能输出c语言的内置数据类型,而string不是c语言的内置数据类型。如需输出string对象中的字符串,可以使用string的成员函数
c_str()
,该函数返回字符串的首字符的地址。 -
map 正向迭代器
map<int, PII>::iterator iter; //迭代器
for (iter = ans.begin(); iter != ans.end(); iter ++ ){}
4. STL:vector 这里用了pair<int, pair<double, string >>
嵌套pair构成三元组
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#define x first
#define y second
using namespace std;
const int N = 10010;
typedef pair<int, pair<double, string >> PII;
vector<PII> ans;
int n, a;
double b;
string s;
int main()
{
cin >> n;
for (int i = 0; i < n; i ++ )
{
cin >> a >> b >> s;
ans.push_back({a, {b, s}});
}
sort(ans.begin(), ans.end());
for (auto i: ans)
printf("%d %.2lf %s\n",i.x, i.y.x, i.y.y.c_str());
return 0;
}
3. STL:map
#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
#define x first
#define y second
using namespace std;
const int N = 10010;
typedef pair<double, string> PII;
map<int, PII> ans;
int n;
int main()
{
int a;
double b;
string c;
cin >> n;
for (int i = 0; i < n; i ++ )
{
cin >> a >> b >> c;
ans.insert({a, {b, c}});
}
for (auto i : ans)
printf("%d %.2f %s\n", i.x, i.y.x, i.y.y.c_str());
return 0;
}
2.stl:map 不用auto的写法 (蓝桥杯不让写auto)
#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
#define x first
#define y second
using namespace std;
const int N = 10010;
typedef pair<double, string> PII;
map<int, PII> ans;
int n;
int main()
{
int a;
double b;
string c;
cin >> n;
for (int i = 0; i < n; i ++ )
{
cin >> a >> b >> c;
ans.insert({a, {b, c}});
}
// 不用auto的写法 (蓝桥杯不让写auto)
// map<int, PII>::iterator iter; 迭代器
for (map<int, PII>::iterator iter = ans.begin(); iter != ans.end(); iter ++ )
printf("%d %.2f %s\n", iter->x, iter->y.x, iter->y.y.c_str()); //这里 iter -> x/y 是map ,后面两个是pair :PII.first/second
return 0;
}
1.写结构体的普通做法
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 10010;
int n;
struct three
{
int a;
double b;
string c;
};
three th[N];
bool comp(three x, three y)
{
return x.a < y.a;
}
int main()
{
cin >> n;
for (int i = 0; i < n; i ++ )
cin >> th[i].a >> th[i].b >> th[i].c;
sort(th, th + n, comp);
for (int i = 0; i < n; i ++ )
{
printf("%d %.2f %s\n", th[i].a, th[i].b, th[i].c.c_str());
}
return 0;
}
hxd,第一个用vector写的,最后输出用迭代器 怎么写。
牛牛牛!!!
%%%%%%%%%
写法也太多了吧,学到了学到了
tql