C++ pair类型详细介绍

pair类型

pair 类型是 C++ 标准库中的一个模板类,它可以将两个不同类型的数据元素组合成一个单元。这个数据结构用于存储两个关联的数据元素,通常称为键值对(key-value pair)。

  • pair 类型在 <utility> 头文件中定义,因此在使用时需要包含这个头文件。

  • 使用 pair 类型的基本语法如下:

    pair<Type1, Type2> p;
    
  • 其中,Type1 和 Type2 分别表示键和值的数据类型。例如,如果你想将一个整数和一个字符串组合在一起,可以这样定义一个 pair:

    pair<int, std::string> p;
    
  • 创建(初始化)一个pair对象的几种方法

    pair<int, std::string> p = std::make_pair(1, "one");//使用make_pair函数创建
    pair<int, std::string> p(1,"one");
    pair<int, std::string> p = {1,"one"}
    
    这三种初始化pair的方式所达到的效果都是一样的,
    无论哪种方式,最终结果都是创建了一个拥有两个值的pair对象,
    一个是int类型的值,一个是string类型的值。第一个值为1,第二个值为"one"
  • pair 类型有两个公共成员变量:first 和 second,分别表示键和值。可以通过这两个成员变量访问存储在 pair 对象中的数据:

    int key = p.first;
    string value = p.second;
    

pair的作用场景

  • pair 类型常用于关联容器(如 std::map 和 std::unordered_map)以及其它一些需要将两个数据元素关联起来的场景。例如,在排序算法中,你可能需要将数组的索引与其对应的值关联起来以便在排序过程中维护索引的正确顺序。

  • 关于 pair 类型的应用和操作,我将给出一些实际示例。

    1. 使用 pair 类型在一个向量中存储多个键值对:
    #include <iostream>
    #include <vector>
    #include <utility>
    
    int main() {
    	std::vector<std::pair<int, std::string>> data = {
        	{1, "one"},
        	{2, "two"},
        	{3, "three"},
        	{4, "four"},
        	{5, "five"}
     	};
    	for (const auto& p : data) {
        	std::cout << p.first << " => " << p.second << std::endl;
     	}
     	return 0;
    }
    
    1. 使用 pair 类型在排序算法中维护索引:
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <utility>
    bool compare(const std::pair<int, int>& a, const std::pair<int, int>& b) {
        return a.second < b.second;
    }
    int main() {
        std::vector<int> data = {5, 3, 7, 1, 2};
        std::vector<std::pair<int, int>> indexed_data;
    
        for (size_t i = 0; i < data.size(); ++i) {
            indexed_data.push_back(std::make_pair(i, data[i]));
        }
    
        std::sort(indexed_data.begin(), indexed_data.end(), compare);
    
        std::cout << "Sorted data: ";
        for (const auto& p : indexed_data) {
            std::cout << p.second << " ";
        }
        std::cout << std::endl;
    
        std::cout << "Original indices: ";
        for (const auto& p : indexed_data) {
            std::cout << p.first << " ";
        }
        std::cout << std::endl;
    
        return 0;
    }
    
    1. 在关联容器(如 std::map)中使用 pair 类型:
    #include <iostream>
    #include <map>
    #include <utility>
    
    int main() {
        std::map<int, std::string> data = {
            {1, "one"},
            {2, "two"},
            {3, "three"},
            {4, "four"},
            {5, "five"}
        };
    
        for (const auto& p : data) {
            std::cout << p.first << " => " << p.second << std::endl;
        }
    
        return 0;
    }
    

总结

这些示例展示了如何使用 pair 类型在不同场景中存储和操作键值对数据。请注意,pair 类型是一个通用的数据结构,可以用于各种需要将两个相关数据元素组合在一起的应用。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿宋同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值