tuple t;t — кортеж с количеством и типами членов, заданными списком T1...Tn. Члены инициализируются по умолчанию (см. раздел 3.3.1)
tuple t(v1, v2, ..., vn);t — кортеж с типами T1...Tn, каждый член которого инициализируется соответствующим инициализатором vi. Этот конструктор является явным (см. раздел 7.5.4)
make_tuple(v1, v2, ..., vn)Возвращает кортеж, инициализированный данными инициализаторов. Тип кортежа выводится из типов инициализаторов
t1 == t2 t1 != t2Два кортежа равны, если у них совпадает количество членов и каждая пара членов равна. Для сравнения используется собственный оператор == каждого члена. Как только найдены неравные члены, последующие не проверяются
t1 опсравн t2Операторы сравнения кортежей используют алфавитный порядок (см. раздел 9.2.7). У кортежей должно быть одинаковое количество членов. Члены кортежа t1 сравниваются с соответствующими членами кортежа t2 при помощи оператора <
get(t)Возвращает ссылку i-ю переменную-член кортежа t; если t — это l-значение, то результат — ссылка на l-значение; в противном случае — ссылка на r-значение. Все члены кортежа являются открытыми (public)
tuple_size<типКортежа>::valueШаблон класса, экземпляр которого может быть создан по типу кортежа и имеет public constexpr static переменную-член value типа size_t, содержащую количество членов в указанном типе кортежа
tuple_elementтипКортежа>::typeШаблон класса, экземпляр которого может быть создан по целочисленной константе и типу кортежа, имеющий открытый член type, являющийся типом указанного члена в кортеже указанного типа

Тип tuple можно считать структурой данных на "скорую руку".

<p>17.1.1. Определение и инициализация кортежей</p>

При определении кортежа следует указать типы каждого из его членов:

tuple threeD; // все три члена установлены в 0

tuple, int, list>

 someVal("constants", {3.14, 2.718}, 42, {0,1,2,3,4,5});

При создании объекта кортежа можно использовать либо стандартный конструктор кортежа, инициализирующий каждый член по умолчанию (см. раздел 3.3.1), либо предоставить инициализатор для каждого члена, как при инициализации кортежа someVal. Этот конструктор кортежа является явным (см. раздел 7.5.4), поэтому следует использовать прямой синтаксис инициализации:

tuple threeD = {1,2,3}; // ошибка

tuple threeD{1,2,3};    // ok

В качестве альтернативы, подобно функции make_pair() (см. раздел 11.2.3), можно использовать библиотечную функцию make_tuple(), создающую объект кортежа:

// кортеж, представляющий транзакцию приложения книжного магазина:

// ISBN, количество, цена книги

auto item = make_tuple("0-999-78345-X", 3, 20.00);

Подобно функции make_pair(), функция make_tuple() использует типы, предоставляемые в качестве инициализаторов, для вывода типа кортежа. В данном случае кортеж item имеет тип tuple.

Доступ к членам кортежа
Перейти на страницу:

Похожие книги