Поделиться через


make_pair

Функция шаблона, которую можно использовать для построения объектов типа pair, где типы компонентов автоматически выбираются на основе типов данных, переданных в качестве параметров.

template<class Type1, class Type2>    pair<Type1, Type2> make_pair(Type1& Val1, Type2& Val2); template<class Type1, class Type2>    pair<Type1, Type2> make_pair(Type1& Val1, Type2&& Val2);  template<class Type1, class Type2>    pair<Type1, Type2> make_pair(Type1&& Val1, Type2& Val2);  template<class Type1, class Type2>    pair<Type1, Type2> make_pair(Type1&& Val1, Type2&& Val2);

Параметры

  • Val1
    Значение, которое инициализирует первый элемент pair.

  • Val2
    Значение, которое инициализирует второй элемент pair.

Возвращаемое значение

Создаваемый парный объект: pair < Type1, Type2 > (Val1, Val2).

Заметки

make_pair преобразует объект типа Класс reference_wrapper в типы ссылки, а убывающие массивы и функции — в указатели.

В возвращенном объекте pair Type1 определяется следующим образом:

  • Если тип ввода Type1 имеет значение reference_wrapper<X>, возвращаемый тип Type1 имеет значение X&.

  • В противном случае возвращаемый тип Type1 имеет значение decay<Type1>::type. Если Класс decay не поддерживается, то возвращаемый тип Type1 совпадает с типом ввода Type1.

Возвращаемый тип Type2 аналогичным образом определяется по типу ввода Type2.

Одно из преимуществ make_pair заключается в том, что сохраненные типы объектов автоматически определяются компилятором, и их не требуется задавать явным образом. Не используйте явные аргументы шаблона, например make_pair<int, int>(1, 2), при использовании make_pair, так как для них характерна избыточная подробность, которая создает дополнительные проблемы со сложными ссылками rvalue, способные вызвать сбой компиляции. В данном случае правильный синтаксис — make_pair(1, 2)

Вспомогательная функция make_pair также предоставляет возможность передать два значения в функцию, которой в качестве параметра ввода требуется пара.

Пример

Пример использования вспомогательной функции make_pair для объявления и инициализации пары см. в разделе Структура pair.

Требования

Заголовок: <utility>

Пространство имен: std

См. также

Ссылки

<utility>

Значения Lvalue и Rvalue