c++中pair的使用方式以及一些常见的操作

c++中pair的使用方式以及一些常见的操作

说明

在C++中,std::pair 是一个标准库模板,用于将两个值作为一个单元进行存储。可以使用std::pair来将两个值组合成一个有序对。

头文件

cpp 复制代码
#include <utility>

创建 std::pair 对象

可以使用多种方式创建 std::pair 对象:

  1. 直接初始化 :通过提供两个值来直接初始化 std::pair 对象。

    cpp 复制代码
    std::pair<int, std::string> myPair(42, "hello");
  2. 使用 make_pair 函数 :这是一种方便的方法,它接受两个参数并返回一个初始化好的 std::pair 对象。

    cpp 复制代码
    auto anotherPair = std::make_pair(10, "world");

访问 std::pair 对象的元素

std::pair 对象的第一个元素可以通过 first 成员变量访问,第二个元素可以通过 second 成员变量访问。

cpp 复制代码
std::cout << "First element of myPair: " << myPair.first << std::endl;
std::cout << "Second element of myPair: " << myPair.second << std::endl;

修改 std::pair 对象的元素

可以直接修改 std::pair 对象的元素:

cpp 复制代码
myPair.first = 100;
myPair.second = "goodbye";

返回 std::pair 对象的函数

有时候函数需要返回多个值,此时可以使用 std::pair

cpp 复制代码
std::pair<int, std::string> getValues() {
    return std::make_pair(42, "hello");
}

auto values = getValues();
std::cout << "Returned pair: (" << values.first << ", " << values.second << ")" << std::endl;

使用 std::pair 在算法中

std::pair 在很多算法中都很有用,例如在排序算法中,可能想要保持每个元素与其索引的关联,可以使用 std::pair 来存储元素和索引。

cpp 复制代码
#include <vector>
#include <algorithm>
#include <iostream>
#include <utility>

int main() {
    std::vector<int> vec = {5, 2, 9, 1, 7};

    // 使用 std::pair 存储元素和索引
    std::vector<std::pair<int, int>> indexedVec;
    for (int i = 0; i < vec.size(); ++i) {
        indexedVec.push_back(std::make_pair(vec[i], i));
    }

    // 根据第一个元素(值)对 indexedVec 进行排序
    std::sort(indexedVec.begin(), indexedVec.end());

    // 输出排序后的结果
    for (const auto& p : indexedVec) {
        std::cout << "Value: " << p.first << ", Index: " << p.second << std::endl;
    }

    return 0;
}

这样,indexedVec 中的元素就被排序了,但是索引信息仍然与值关联着。

相关推荐
Dxy12393102162 分钟前
Python Scikit-Learn核心流程
开发语言·python·scikit-learn
FL16238631294 分钟前
[python]opencv从源码编译python版本发现不生成cv2.pyd
开发语言·python·opencv
患得患失9498 分钟前
【算法】力扣体系分类
算法·leetcode·分类
Moutai码农9 分钟前
机器学习算法-sklearn源起
算法·机器学习·sklearn
加什么瓦12 分钟前
JVM——内存模型
java·开发语言·jvm
观音山保我别报错14 分钟前
JVM 的垃圾回收机制 GC
java·开发语言·jvm
爬虫程序猿19 分钟前
利用 Python 爬虫获取唯品会 VIP 商品详情:实战指南
开发语言·爬虫·python
油泼辣子多加20 分钟前
【风控】行为评分卡(B卡)模型
算法·金融·集成学习
走过冬季21 分钟前
Java常用数据结构底层实现原理及应用场景
java·开发语言·数据结构
XIMCoCo23 分钟前
C++ 实现二叉树的后序遍历与中序遍历构建及层次遍历输出
java·开发语言·c++