17.1. Тип tuple

Шаблон tuple (кортеж) подобен шаблону pair (пара) (см. раздел 11.2.3). У каждого экземпляра шаблона pair могут быть члены разных типов, но их всегда только два. Члены экземпляров шаблона tuple также могут иметь разные типы, но количество их может быть любым. Каждый конкретный экземпляр шаблона tuple имеет фиксированное количество членов, но другой экземпляр типа может отличаться количеством членов.

Тип tuple особенно полезен, когда необходимо объединить некие данные в единый объект, но нет желания определять структуру для их хранения. Список операций, поддерживаемых типом tuple, приведен в табл. 17.1. Тип tuple, наряду с сопутствующими ему типами и функциями, определен в заголовке tuple.

Таблица 17.1. Операции с кортежами

tuple<T1, T2, ..., Tn> t; t — кортеж с количеством и типами членов, заданными списком T1...Tn. Члены инициализируются по умолчанию (см. раздел 3.3.1) tuple<T1, T2, ..., Tn> 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<i>(t) Возвращает ссылку i-ю переменную-член кортежа t; если t — это l-значение, то результат — ссылка на l-значение; в противном случае — ссылка на r-значение. Все члены кортежа являются открытыми (public) tuple_size<типКортежа>::value Шаблон класса, экземпляр которого может быть создан по типу кортежа и имеет public constexpr static переменную-член value типа size_t, содержащую количество членов в указанном типе кортежа tuple_element<i, типКортежа>::type Шаблон класса, экземпляр которого может быть создан по целочисленной константе и типу кортежа, имеющий открытый член type, являющийся типом указанного члена в кортеже указанного типа

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

Более 800 000 книг и аудиокниг! 📚

Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением

ПОЛУЧИТЬ ПОДАРОК