pair类型
pair 类型是 C++ 标准库中的一个模板类,它可以将两个不同类型的数据元素组合成一个单元。这个数据结构用于存储两个关联的数据元素,通常称为键值对(key-value pair)。
pair 类型在
使用 pair 类型的基本语法如下:
pair
其中,Type1 和 Type2 分别表示键和值的数据类型。例如,如果你想将一个整数和一个字符串组合在一起,可以这样定义一个 pair:
pair
创建(初始化)一个pair对象的几种方法
pair
pair
pair
这三种初始化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 类型的应用和操作,我将给出一些实际示例。
使用 pair 类型在一个向量中存储多个键值对:
#include
#include
#include
int main() {
std::vector
{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 类型在排序算法中维护索引:
#include
#include
#include
#include
bool compare(const std::pair
return a.second < b.second;
}
int main() {
std::vector
std::vector
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;
}
在关联容器(如 std::map)中使用 pair 类型:
#include
#include
#include
int main() {
std::map
{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 类型是一个通用的数据结构,可以用于各种需要将两个相关数据元素组合在一起的应用。

