目录
一、成员函数
一、构造函数
二、赋值运算符重载 operator=
三、交换函数 swap
二、非成员函数重载
一、关系运算符重载
二、交换函数 swap
三、获取数据 get
三、See also
一、无需写类型创建pair对象 make_pair
pair是一个模板类,可以存储两个值的有序对。通常用于需要返回两个值的函数,或者作为容器(如std::map、std::set)的元素。
pair包含在头文件<utility>中
template<class T1, class T2>
struct pair {......}
一、成员函数
一、构造函数
default (1) | pair(); |
---|---|
copy (2) | template<class U, class V> pair (const pair<U,V>& pr); |
initialization (3) | pair (const first_type& a, const second_type& b); |
1.默认构造 pair ()
2.拷贝构造 template<class U, class V>
pair (const pair<U, V>& pr)
3.有参构造 pair (const first_type& a, const second_type& b)
pair<int, int> pr1;//默认构造pair<int, int> pr2(10, 20);//有参构造pair<int, int> pr3(pr2);//拷贝构造
二、赋值运算符重载 operator=
copy (1) | pair& operator= (const pair& pr); |
---|
1.pair& operator= (const pair& pr)
pair<int, int> pr1(10, 20);pair<int, int> pr2;pr2 = pr1;//赋值运算符重载
三、交换函数 swap
void swap (pair& pr) noexcept
noexcept关键字是用于指示函数是否抛出异常。如果一个函数使用noexcept关键字声明,并在运行时抛出异常,程序会立即终止。
pair<int, char> pr1(10, 'a');pair<int, char> pr2(20, 'b');pr1.swap(pr2);
二、非成员函数重载
一、关系运算符重载
(1) | template <class T1, class T2> bool operator== (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs); |
---|---|
(2) | template <class T1, class T2> bool operator!= (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs); |
(3) | template <class T1, class T2> bool operator< (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs); |
(4) | template <class T1, class T2> bool operator<= (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs); |
(5) | template <class T1, class T2> bool operator> (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs); |
(6) | template <class T1, class T2> bool operator>= (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs); |
二、交换函数 swap
template <class T1, class T2>
void swap (pair<T1, T2>& x, pair<T1, T2>& y) noexcept
pair<int, char> pr1(10, 'a');pair<int, char> pr2(20, 'b');swap(pr1, pr2);
三、获取数据 get
lvalue (1) | template <size_t I, class T1, class T2> typename tuple_element< I, pair<T1,T2> >::type& get (pair<T1,T2>& pr) noexcept; |
---|---|
rvalue (2) | template <size_t I, class T1, class T2> typename tuple_element< I, pair<T1,T2> >::type&& get (pair<T1,T2>&& pr) noexcept; |
const (3) | template <size_t I, class T1, class T2> const typename tuple_element< I, pair<T1,T2> >::type& get (const pair<T1,T2>& pr) noexcept; |
size_t I 值为0或1,如果I值为0,返回成员first的引用;如果I值为1,返回成员second的引用
pair<int, char> pr1(10, 'a');get<0>(pr1) = 100;//将pr1的第一个成员修改为100cout << get<0>(pr1) << endl;//100
三、See also
一、无需写类型创建pair对象 make_pair
template <class T1, class T2>
pair<T1, T2> make_pair (T1 x, T2 y)
当需要传入一个pair对象的参数时,使用make_pair会很方便
void func(pair<int, char> pr){ cout << pr.first << " " << pr.second << endl;}void test(){ func(make_pair(10, 'a'));}pair<int, char> pr1;pr1 = make_pair(20, 'b');