Sdílet prostřednictvím


make_pair

Funkce šablony, kterou můžete použít k vytvoření objektů typu pair, kde jsou typy komponenty automaticky zvoleny na základě datových typů předaných jako parametry.

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);

Parametry

  • Val1
    Hodnota, která inicializuje první prvek pair.

  • Val2
    Hodnota, která inicializuje druhý prvek pair.

Vrácená hodnota

Dvojice objekt, který je vytvořen: pair<Type1, Type2> (Val1, Val2).

Poznámky

make_pair převede objekt typu reference_wrapper – třída na referenční typy a převede slábnoucí pole a funkce na ukazatele.

Ve vráceném objektu pair je Type1 určen následovně:

  • Pokud vstupní typ Type1 je reference_wrapper<X>, vrácený typ Type1 je X&.

  • V opačném případě vrácený typ Type1 je decay<Type1>::type.Pokud decay – třída není podporováno, vrácený typ Type1 je stejný jako vstupní typ Type1.

Vrácený typ Type2 je podobně určen na základě vstupního typu Type2.

Jednou z výhod make_pair je, že typy ukládaných objektů jsou určeny automaticky kompilátorem a není nutné je určit explicitně.Nepoužívejte explicitní argumenty šablony, například make_pair<int, int>(1, 2), když používáte make_pair, protože je zbytečně podrobný a přináší složité problémy s odkazem hodnoty rvalue, které mohou způsobit selhání kompilace.V tomto příkladu by správná syntaxe byla make_pair(1, 2)

Funkce pomocné rutiny make_pair dále umožňuje předat dvě hodnoty funkci, která jako vstupní parametr vyžaduje dvojici.

Příklad

Příklad použití funkce pomocné rutiny make_pair k deklaraci a inicializaci dvojice naleznete v tématu pair – struktura

Požadavky

Záhlaví: < Nástroje >

Obor názvů: std

Viz také

Referenční dokumentace

<utility>

Hodnoty Lvalue a Rvalue