8. 入门并实践STL——pair篇

pair

当想要将两个元素绑在一起作为一个合成元素,又不想定义一个结构体时,可以使用pair

1. How to use?

#include  // 导入map也可以使用pair,因为map的内部实现涉及pair,因此添加头文件map会自动添加utility
using namespace std;

2. pair的定义

  • pair name;
  • 初始化
    1. pair p("123", 123);
    2. make_pair("123", 123);

3. pair中的元素访问

  • 只有两个元素
  • p.first
  • p.second

4. 常用函数解析

  • 比较操作数
  • 两个pair类型数据可以直接使用==、!=、<、<=、>、>=比较大小,比较规则是先以first的大小作为标准,只有当first相等时才去判别second的大小。

5. 常见用途

  1. 用来代替二元结构体及其构造函数,可以节省编码实践
  2. 作为map的键值对进行插入
    • m.insert(make_pair("1", 1);
    • m.insert(pair("2", 2));

6. 习题

重心在哪里

  • 三角形的重心(中心)为三角形三条中线的交点

    • 重心坐标((x1+x2+x3)/3,(y1+y2+y3)/3)
  • 拓展:

    • 求多边形的重心
  • 外心定理:三角形的三边的垂直平分线交于一点。该点叫做三角形的外心。

  • 垂心定理:三角形的三条高交于一点。该点叫做三角形的垂心。

  • 内心定理:三角形的三内角平分线交于一点。该点叫做三角形的内心

  • 自己的代码+其他人的答案

#include 

#include 

#include 

#include

#include



using namespace std;



int main() {

        int N;

        while (scanf("%d", &N) != EOF && N != 0) {

               for (int i = 0; i < N; i++) {

                       pair A;

                       pair B;

                       pair 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;

}

你可能感兴趣的:(8. 入门并实践STL——pair篇)