std::pair 是 C++ 标准库中的一个模板类,它用于存储一对相关的值。每个 std::pair 对象都包含两个成员:first 和 second,分别代表了配对的两个元素。这两个元素可以是任何类型,包括相同的类型。
以下是一些 std::pair 的常见用法:
- 作为函数的返回类型:当你需要从一个函数中返回两个相关的值时,可以使用
std::pair。这可以让你的代码更清晰,避免创建额外的数据结构。
std::pair<int, std::string> getPair() {
return {42, "hello"};
}
int main() {
auto [num, str] = getPair();
std::cout << num << " " << str << std::endl; // 输出: 42 hello
}
这里使用了 C++17 的结构化绑定,它可以方便地分别获取 std::pair 的两个元素。
2. 存储多个值:你可以使用 std::pair 来存储多个值,例如在数据结构(如 std::map)中。
std::map<std::string, std::pair<int, int>> myMap;
myMap["point"] = {1, 2};
在这个例子中,myMap 是一个字符串到整数的对的映射。每个键对应的值都是一个 std::pair<int, int>,它表示一个点的坐标。
3. 使用 std::get 获取元素:你可以使用 std::get 来获取 std::pair 中的元素。例如:
std::pair<int, std::string> p = {42, "hello"};
int num = std::get<0>(p); // 获取 first 元素
std::string str = std::get<1>(p); // 获取 second 元素
- 使用
std::make_pair创建配对:你可以使用std::make_pair来创建std::pair对象。例如:
auto p = std::make_pair(42, "hello"); // 创建一个 pair 对象,包含 {42, "hello"}
- 在集合中使用:你可以在集合(如
std::vector或std::map)中使用std::pair。例如,你可以创建一个存储多个键值对的std::map:
std::map<std::string, std::pair<int, int>> myMap;
myMap["point"] = {1, 2};
myMap["line"] = {3, 4};