C++ std::pair的用法

689 阅读1分钟

std::pair 是 C++ 标准库中的一个模板类,它用于存储一对相关的值。每个 std::pair 对象都包含两个成员:firstsecond,分别代表了配对的两个元素。这两个元素可以是任何类型,包括相同的类型。

以下是一些 std::pair 的常见用法:

  1. 作为函数的返回类型:当你需要从一个函数中返回两个相关的值时,可以使用 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 元素
  1. 使用 std::make_pair 创建配对:你可以使用 std::make_pair 来创建 std::pair 对象。例如:
auto p = std::make_pair(42, "hello");  // 创建一个 pair 对象,包含 {42, "hello"}
  1. 在集合中使用:你可以在集合(如 std::vectorstd::map)中使用 std::pair。例如,你可以创建一个存储多个键值对的 std::map
std::map<std::string, std::pair<int, int>> myMap;
myMap["point"] = {1, 2};
myMap["line"] = {3, 4};