Кратко:
Кортежи (tuples) в C++ — это контейнеры, которые могут содержать фиксированное количество элементов разных типов.
Синтаксис
#include <tuple>
 
std::tuple<int, double, std::string> t(1, 2.5, "example");Свойства
- Могут содержать элементы различных типов.
- Поддерживают произвольное количество элементов.
- Предоставляют доступ к элементам по индексу.
- Могут быть сравнены, если все элементы поддерживают операторы сравнения.
Примеры кода
Создание и использование кортежей
#include <iostream>
#include <tuple>
#include <string>
 
int main() {
    // Создание кортежа
    std::tuple<int, double, std::string> t(1, 2.5, "example");
 
    // Доступ к элементам кортежа с использованием std::get
    std::cout << std::get<0>(t) << " "; // Output: 1
    std::cout << std::get<1>(t) << " "; // Output: 2.5
    std::cout << std::get<2>(t) << std::endl; // Output: example
 
    // Изменение значений элементов кортежа
    std::get<1>(t) = 3.5;
    std::cout << std::get<1>(t) << std::endl; // Output: 3.5
 
    return 0;
}Разложение кортежа
#include <iostream>
#include <tuple>
#include <string>
 
int main() {
    std::tuple<int, double, std::string> t(1, 2.5, "example");
 
    // Разложение кортежа на переменные
    int i;
    double d;
    std::string s;
    std::tie(i, d, s) = t;
 
    std::cout << i << " " << d << " " << s << std::endl; // Output: 1 2.5 example
 
    return 0;
}Использование std::make_tuple и std::tie
#include <iostream>
#include <tuple>
#include <string>
 
int main() {
    // Использование std::make_tuple для создания кортежа
    auto t = std::make_tuple(1, 2.5, "example");
 
    // Использование std::tie для разложения кортежа
    int i;
    double d;
    std::string s;
    std::tie(i, d, s) = t;
 
    std::cout << i << " " << d << " " << s << std::endl; // Output: 1 2.5 example
 
    return 0;
}Применение кортежей в функциях
#include <iostream>
#include <tuple>
#include <string>
 
// Функция, возвращающая кортеж
std::tuple<int, double, std::string> getValues() {
    return std::make_tuple(1, 2.5, "example");
}
 
int main() {
    auto [i, d, s] = getValues();
 
    std::cout << i << " " << d << " " << s << std::endl; // Output: 1 2.5 example
 
    return 0;
}