Используйте шаблон класса std::tuple
, объявленный в заголовке <tuple>
. Например,
#include <iostream>
#include <string>
#include <tuple>
int main()
{
std::tuple<std::string, int, double> t ={ "John", 12, 40.025 };
std::cout << std::get<0>( t ) << ", "
<< std::get<1>( t ) << ", "
<< std::get<2>( t ) << '\n';
std::cout << std::get<std::string>( t ) << ", "
<< std::get<int>( t ) << ", "
<< std::get<double>( t ) << '\n';
return 0;
}
Вывод программы:
John, 12, 40.025
John, 12, 40.025
И вы можете использовать контейнер элементов с этим типом, например, как массив, потому что перечисленные типы в кортеже являются конструктивными по умолчанию. .
Например
#include <iostream>
#include <string>
#include <tuple>
int main()
{
std::tuple<std::string, int, double> t[1];
t[0] = { "John", 12, 40.025 };
std::cout << std::get<0>( t[0] ) << ", "
<< std::get<1>( t[0] ) << ", "
<< std::get<2>( t[0] ) << '\n';
std::cout << std::get<std::string>( t[0] ) << ", "
<< std::get<int>( t[0] ) << ", "
<< std::get<double>( t[0] ) << '\n';
return 0;
}
В качестве альтернативы вы можете определить свой собственный составной тип (класс или структуру), который будет содержать подобъекты требуемых типов.