c++中pair的使用方式以及一些常见的操作
说明
在C++中,std::pair
是一个标准库模板,用于将两个值作为一个单元进行存储。可以使用std::pair
来将两个值组合成一个有序对。
头文件
#include <utility>
创建 std::pair
对象
可以使用多种方式创建 std::pair
对象:
-
直接初始化:通过提供两个值来直接初始化
std::pair
对象。std::pair<int, std::string> myPair(42, "hello");
-
使用 make_pair 函数:这是一种方便的方法,它接受两个参数并返回一个初始化好的
std::pair
对象。auto anotherPair = std::make_pair(10, "world");
访问 std::pair
对象的元素
std::pair
对象的第一个元素可以通过 first
成员变量访问,第二个元素可以通过 second
成员变量访问。
std::cout << "First element of myPair: " << myPair.first << std::endl;
std::cout << "Second element of myPair: " << myPair.second << std::endl;
修改 std::pair
对象的元素
可以直接修改 std::pair
对象的元素:
myPair.first = 100;
myPair.second = "goodbye";
返回 std::pair
对象的函数
有时候函数需要返回多个值,此时可以使用 std::pair
:
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
来存储元素和索引。
#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
中的元素就被排序了,但是索引信息仍然与值关联着。