C++ pair的详细教程

在C++里,pair是一种特别实用的工具,它能够把两个不同类型的数据组合成一个单元。接下来,我会以通俗易懂的方式详细讲解pair,并且配有代码和注释,就算是小学生也能轻松理解。

什么是pair?

你可以把pair想象成一个“超级盒子”,这个盒子有两个小格子,每个小格子可以存放不同类型的东西。比如,一个格子放数字,另一个格子放文字。

pair的基本使用

下面通过代码来看看如何使用pair

#include <iostream>
#include <utility>  // 使用pair需要包含这个头文件

int main() {
    // 创建一个pair,第一个元素是整数42,第二个元素是字符串"hello"
    std::pair<int, std::string> myPair(42, "hello");
    
    // 访问pair的第一个元素,使用.first
    std::cout << "第一个元素是: " << myPair.first << std::endl;
    
    // 访问pair的第二个元素,使用.second
    std::cout << "第二个元素是: " << myPair.second << std::endl;
    
    // 修改pair的第一个元素
    myPair.first = 100;
    std::cout << "修改后的第一个元素是: " << myPair.first << std::endl;
    
    // 修改pair的第二个元素
    myPair.second = "world";
    std::cout << "修改后的第二个元素是: " << myPair.second << std::endl;
    
    return 0;
}

代码解释

  • 头文件:要使用pair,必须包含<utility>头文件。
  • 创建pair:使用std::pair<类型1, 类型2>来定义pair的类型,然后通过括号里的两个值来初始化它。
  • 访问元素:通过.first可以访问pair的第一个元素,通过.second可以访问第二个元素。
  • 修改元素:直接给.first.second赋值,就能修改pair里的元素。

使用make_pair函数

除了上面的方式,还能使用make_pair函数来创建pair,这样会更方便:

#include <iostream>
#include <utility>

int main() {
    // 使用make_pair创建pair
    auto anotherPair = std::make_pair(3.14, 'A');
    
    // 输出pair的元素
    std::cout << "第一个元素是: " << anotherPair.first << std::endl;
    std::cout << "第二个元素是: " << anotherPair.second << std::endl;
    
    return 0;
}

pair作为函数参数和返回值

pair还能作为函数的参数或者返回值,就像这样:

#include <iostream>
#include <utility>

// 函数返回一个pair
std::pair<int, int> addAndSubtract(int a, int b) {
    int sum = a + b;        // 计算两数之和
    int difference = a - b; // 计算两数之差
    return std::make_pair(sum, difference);
}

int main() {
    // 调用函数并接收返回的pair
    auto result = addAndSubtract(10, 5);
    
    // 输出结果
    std::cout << "和是: " << result.first << std::endl;
    std::cout << "差是: " << result.second << std::endl;
    
    return 0;
}

比较pair

pair之间可以进行比较,比较的规则是先比较第一个元素,如果第一个元素相等,再比较第二个元素:

#include <iostream>
#include <utility>

int main() {
    std::pair<int, char> p1(1, 'a');
    std::pair<int, char> p2(1, 'b');
    std::pair<int, char> p3(2, 'a');
    
    // 比较p1和p2
    std::cout << "p1 < p2: " << (p1 < p2) << std::endl;  // 输出1(true),因为第二个元素 'a' < 'b'
    
    // 比较p1和p3
    std::cout << "p1 < p3: " << (p1 < p3) << std::endl;  // 输出1(true),因为第一个元素 1 < 2
    
    return 0;
}

pair的常见用途

  • 返回多个值:从函数中返回两个值。
  • 存储关联数据:比如把ID和对应的名称关联起来。
  • 容器元素:在mapset等容器里存储键值对。

总结

  • pair可以将两个不同类型的值组合成一个单元。
  • 可以通过.first.second来访问和修改pair中的元素。
  • 可以使用make_pair函数方便地创建pair。
  • pair之间可以进行比较,比较时先看第一个元素,再看第二个元素。

希望这个教程能帮助你理解C++中的pair!如果有任何疑问,随时都能问我。

3 条评论

  • @ 2025-7-13 14:30:08
    #include <iostream>
    #include <utility>
    using namespace std;
    int main() {
    	// 使用make_pair创建pair
    	auto anotherPair = make_pair(67, 'A');
    	cout << typeid(anotherPair).name()<<endl;
    	// 输出pair的元素
    	cout << "第一个元素是: " << anotherPair.first << endl;
    	cout << "第二个元素是: " << anotherPair.second << endl;
    	
    	return 0;
    }
    
    
    • @ 2025-7-13 14:23:14
      #include<iostream>
      #include <utility> // pair 所在头文件
      using namespace std;
      //#include<map>
      //pair<string, int> a={"张三",500};//键值对
      pair<string, int> p("小明", 90); // 创建一个 pair:姓名 + 分数
      int main() {
      	cout << "姓名:" << p.first << endl;   // 输出:小明
      	cout << "分数:" << p.second << endl;   // 输出:90
      	p.first = "张三";
      	p.second = 300;
      	cout << "姓名:" << p.first << endl;
      	cout << "分数:" << p.second << endl;
      	return 0;
      }
      
      • @ 2025-7-13 14:21:19
        #include<iostream>
        #include <utility> // pair 所在头文件
        using namespace std;
        //#include<map>
        //pair<string, int> a={"张三",500};//键值对
        pair<string, int> p("小明", 90); // 创建一个 pair:姓名 + 分数
        int main() {
        	cout << "姓名:" << p.first << endl;   // 输出:小明
        	cout << "分数:" << p.second << endl;   // 输出:90
        	
        	return 0;
        }
        
        • 1