前言:
两者结合后的效果:
题目:
分析:
代码:
pair与vector输入与访问:
总代码:
#include<iostream>
#include<vector>
using namespace std;
int N, G, K;//定义题目中第一行的量
vector<pair<string, int>> cnt;
//输出输入结果
void out1() {
cout << "*********************输入结果为************************" << endl;
for (auto it = cnt.begin(); it != cnt.end(); it++) {
cout << (*it).first << " " << (*it).second << endl;
}
}
int main()
{
cin >> N >> G >> K;
//输入初始数据
for (int i = 0; i < N; i++) {
string a; int b;
cin >> a >> b;
cnt.push_back(make_pair(a, b));
}
out1();
return 0;
}
结果:
分析
构造:
vector<pair<string, int>> cnt;
输入:
for (int i = 0; i < N; i++) {
string a; int b;
cin >> a >> b;
cnt.push_back(make_pair(a, b));
}
访问:
对构造物进行排序:
总代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int N, G, K;//定义题目中第一行的量
vector<pair<string, int>> cnt;
//sort排序的规则
bool cmp(pair<string, int> a, pair<string, int> b) {
if (a.second != b.second)
return a.second > b.second;
else
return a.first < b.first;
}
//输出输入结果
void out1() {
cout << "*********************输入结果为************************" << endl;
for (auto it = cnt.begin(); it != cnt.end(); it++) {
cout << (*it).first << " " << (*it).second << endl;
}
}
void out2() {
cout << "*********************排序后结果************************" << endl;
for (auto it = cnt.begin(); it != cnt.end(); it++) {
cout << (*it).first << " " << (*it).second << endl;
}
}
int main()
{
cin >> N >> G >> K;
//输入初始数据
for (int i = 0; i < N; i++) {
string a; int b;
cin >> a >> b;
cnt.push_back(make_pair(a, b));
}
out1();
sort(cnt.begin(), cnt.begin() + N, cmp);
out2();
return 0;
}
结果:
分析:
总:
总结: