Aracılığıyla paylaş


<tuple> işlevleri

apply

template <class F, class Tuple> constexpr decltype(auto) apply(F&& f, Tuple&& t);

Açıklamalar

Tanımlama grubu t ile F işlevini çağırır.

forward_as_tuple

template <class... TTypes>
    constexpr tuple<TTypes&&...> forward_as_tuple(TTypes&&...) noexcept;

Dönüş Değeri

tuple<TTypes&&...>(std::forward<TTypes>(t)...) döndürür.

Açıklamalar

bir işleve bağımsız değişken olarak iletmek için uygun olan t içindeki bağımsız değişkenlere başvurular demetini oluşturur.

get

Bir nesneden dizine veya (C++14'te) türe göre bir tuple öğe alır.

// by index:
// get reference to Index element of tuple
template <size_t Index, class... Types>
   constexpr tuple_element_t<Index, tuple<Types...>>& get(tuple<Types...>& Tuple) noexcept;

// get const reference to Index element of tuple
template <size_t Index, class... Types>
   constexpr const tuple_element_t<Index, tuple<Types...>>& get(const tuple<Types...>& Tuple) noexcept;

// get rvalue reference to Index element of tuple
template <size_t Index, class... Types>
   constexpr tuple_element_t<Index, tuple<Types...>>&& get(tuple<Types...>&& Tuple) noexcept;

// (C++14) by type:
// get reference to T element of tuple
template <class T, class... Types>
   constexpr T& get(tuple<Types...>& Tuple) noexcept;

// get const reference to T element of tuple
template <class T, class... Types>
   constexpr const T& get(const tuple<Types...>& Tuple) noexcept;

// get rvalue reference to T element of tuple
template <class T, class... Types>
   constexpr T&& get(tuple<Types...>&& Tuple) noexcept;

Parametreler

Dizin
Alınacak öğenin dizini.

Türler
Tanımlama grubunda bildirim sırasına göre bildirilen tür dizisi.

T
Alınacak öğenin türü.

Tuple
std::tuple Herhangi bir sayıda öğe içeren bir.

Açıklamalar

Şablon işlevleri dizin Dizinindeki değere veya nesnedeki T türüne tuple bir başvuru döndürür.

Tuple, T türünde birden fazla veya daha az öğe içeriyorsa çağırma get<T>(Tuple) bir derleyici hatası oluşturur.

Örnek

#include <tuple>
#include <iostream>
#include <string>

using namespace std;

int main() {
    tuple<int, double, string> tup(0, 1.42, "Call me Tuple");

    // get elements by index
    cout << " " << get<0>(tup);
    cout << " " << get<1>(tup);
    cout << " " << get<2>(tup) << endl;

    // get elements by type
    cout << " " << get<int>(tup);
    cout << " " << get<double>(tup);
    cout << " " << get<string>(tup) << endl;
}
0 1.42 Call me Tuple
0 1.42 Call me Tuple

make_from_tuple

template <class T, class Tuple> constexpr T make_from_tuple(Tuple&& t);

Açıklamalar

ile return make_from_tuple_impl<T>(forward<Tuple>(t), make_index_sequence<tuple_size_v<decay_t<Tuple>>>{})aynı.

make_tuple

tuple Öğesinden değerleri yapar.

template <class T1, class T2, ..., class TN>
   tuple<V1, V2, ..., VN> make_tuple(const T1& t1, const T2& t2, ..., const TN& tN);

Parametreler

TN
N. işlev parametresinin türü.

Tn
N. işlev parametresinin değeri.

Açıklamalar

Şablon işlevi, her türün karşılık gelen tür X& Vi cv Ti reference_wrapper<X>olduğunda olduğu değerini döndürürtuple<V1, V2, ..., VN>(t1, t2, ..., tN); aksi takdirde olur.Ti

Bunun bir avantajı make_tuple , depolanmakta olan nesne türlerinin derleyici tarafından otomatik olarak belirlenmesi ve açıkça belirtilmesi gerekmemesidir. Gereksiz yere ayrıntılı olduğu ve derleme hatasına neden olabilecek karmaşık rvalue başvuru sorunları eklediği için kullandığınızda make_tuple olduğu gibi make_tuple<int, int>(1, 2) açık şablon bağımsız değişkenlerini kullanmayın.

Örnek

// std__tuple__make_tuple.cpp
// compile by using: /EHsc
#include <tuple>
#include <iostream>

typedef std::tuple<int, double, int, double> Mytuple;
int main() {
    Mytuple c0(0, 1, 2, 3);

// display contents " 0 1 2 3"
    std::cout << std::get<0>(c0) << " ";
    std::cout << std::get<1>(c0) << " ";
    std::cout << std::get<2>(c0) << " ";
    std::cout << std::get<3>(c0) << std::endl;

    c0 = std::make_tuple(4, 5, 6, 7);

// display contents " 4 5 6 7"
    std::cout << std::get<0>(c0) << " ";
    std::cout << std::get<1>(c0) << " ";
    std::cout << std::get<2>(c0) << " ";
    std::cout << std::get<3>(c0) << std::endl;

    return (0);
}
0 1 2 3
4 5 6 7

swap

template <class... Types>
    void swap(tuple<Types...>& x, tuple<Types...>& y) noexcept(see below );

bağlamak

tuple From öğesi başvuruları yapar.

template <class T1, class T2, ..., class TN>
tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tN);

Parametreler

TN
N. tanımlama grubu öğesinin temel türü.

Açıklamalar

Şablon işlevi döndürür tuple<T1&, T2&, ..., TN&>(t1, t2, ..., tN).

Örnek

// std__tuple__tie.cpp
// compile with: /EHsc
#include <tuple>
#include <iostream>

typedef std::tuple<int, double, int, double> Mytuple;
int main() {
    Mytuple c0(0, 1, 2, 3);

// display contents " 0 1 2 3"
    std::cout << " " << std::get<0>(c0);
    std::cout << " " << std::get<1>(c0);
    std::cout << " " << std::get<2>(c0);
    std::cout << " " << std::get<3>(c0);
    std::cout << std::endl;

    int v4 = 4;
    double v5 = 5;
    int v6 = 6;
    double v7 = 7;
    std::tie(v4, v5, v6, v7) = c0;

// display contents " 0 1 2 3"
    std::cout << " " << v4;
    std::cout << " " << v5;
    std::cout << " " << v6;
    std::cout << " " << v7;
    std::cout << std::endl;

    return (0);
}
0 1 2 3
0 1 2 3

tuple_cat

template <class... Tuples> constexpr tuple<CTypes...> tuple_cat(Tuples&&...);

Dönüş Değeri

Her tür öğesi başlatılarak yapılan bir tanımlama grubu nesnesi.

tuple_element_t

template <size_t I, class T>
    using tuple_element_t = typename tuple_element<I, T>::type;

tuple_size_v

template <class T>
    inline constexpr size_t tuple_size_v = tuple_size<T>::value;