前言:
 
 
两者结合后的效果:
 
 
题目:
 
 
分析:
 
 
代码:
 
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;
}
 
 结果:
 

 
分析:
 
 
总:
 
 
总结: