8. 入门并实践STL——pair篇
2019-03-06 本文已影响0人
zju_dream
pair
当想要将两个元素绑在一起作为一个合成元素,又不想定义一个结构体时,可以使用pair。
1. How to use?
#include <utility> // 导入map也可以使用pair,因为map的内部实现涉及pair,因此添加头文件map会自动添加utility
using namespace std;
2. pair的定义
pair<typename1, typename2> name;- 初始化
pair<string, int> p("123", 123);make_pair("123", 123);
3. pair中的元素访问
- 只有两个元素
p.firstp.second
4. 常用函数解析
- 比较操作数
- 两个pair类型数据可以直接使用==、!=、<、<=、>、>=比较大小,比较规则是先以first的大小作为标准,只有当first相等时才去判别second的大小。
5. 常见用途
- 用来代替二元结构体及其构造函数,可以节省编码实践
- 作为map的键值对进行插入
m.insert(make_pair("1", 1);m.insert(pair<string, int>("2", 2));
6. 习题
-
三角形的重心(中心)为三角形三条中线的交点
- 重心坐标((x1+x2+x3)/3,(y1+y2+y3)/3)
-
拓展:
-
外心定理:三角形的三边的垂直平分线交于一点。该点叫做三角形的外心。
-
垂心定理:三角形的三条高交于一点。该点叫做三角形的垂心。
-
内心定理:三角形的三内角平分线交于一点。该点叫做三角形的内心
-
自己的代码+其他人的答案
#include <stack>
#include <iostream>
#include <string>
#include<utility>
#include<math.h>
using namespace std;
int main() {
int N;
while (scanf("%d", &N) != EOF && N != 0) {
for (int i = 0; i < N; i++) {
pair<double, double> A;
pair<double, double> B;
pair<double, double> C;
scanf("%lf%lf%lf%lf%lf%lf", &A.first, &A.second, &B.first,
&B.second, &C.first, &C.second);
printf("%.1lf %.1lf\n", (A.first + B.first + C.first) / 3,
(A.second + B.second + C.second) / 3);
}
}
return 0;
}