c++ pair
C++中的pair
是一个模板类,用来存储两个不同类型的对象。它位于<utility>
头文件中,并定义在std
命名空间中。
pair
的定义如下:
template <class T1, class T2>
struct pair {
using first_type = T1;
using second_type = T2;
T1 first;
T2 second;
// 构造函数
constexpr pair();
constexpr pair(const T1& x, const T2& y);
template<class U1, class U2>
constexpr pair(U1&& x, U2&& y);
template<class... Args1, class... Args2>
constexpr pair(piecewise_construct_t, tuple<Args1...> first_args, tuple<Args2...> second_args);
// 拷贝和移动构造函数
template<class U1, class U2>
constexpr pair(const pair<U1, U2>& other);
template<class U1, class U2>
constexpr pair(pair<U1, U2>&& other);
// 赋值操作符
template<class U1, class U2>
constexpr pair& operator=(const pair<U1, U2>& other);
template<class U1, class U2>
constexpr pair& operator=(pair<U1, U2>&& other);
constexpr void swap(pair& other) noexcept(noexcept(swap(first, other.first)) && noexcept(swap(second, other.second)));
};
pair
提供了以下主要功能:
first
和second
是pair
的两个成员变量,用来存储两个不同类型的值。pair
的构造函数可以接受两个参数,并根据参数的类型自动推导为first
和second
进行初始化。pair
提供了拷贝和移动构造函数,以及赋值操作符,可以方便地进行对象的拷贝、移动和赋值操作。pair
的成员变量可以使用std::get
函数或者std::tie
函数进行访问和解包。pair
还提供了swap
函数,用来交换两个pair
对象的值。
以下是pair
的示例用法:
#include <iostream>
#include <utility>
int main() {
std::pair<int, std::string> p1(1, "one");
std::pair<int, std::string> p2 = std::make_pair(2, "two");
std::cout << p1.first << " " << p1.second << std::endl;
std::cout << p2.first << " " << p2.second << std::endl;
p1.second = "updated";
std::cout << p1.first << " " << p1.second << std::endl;
std::swap(p1, p2);
std::cout << p1.first << " " << p1.second << std::endl;
std::cout << p2.first << " " << p2.second << std::endl;
return 0;
}
输出结果:
1 one
2 two
1 updated
2 updated
1 two
以上示例展示了创建pair
对象、访问成员变量、修改成员变量以及交换对象值的操作。
希望以上解释对你有所帮助!如有其他问题,请随时提问。