Если вы всегда возвращаете фиксированное количество элементов и готовы использовать расширения TR1 (или Boost), я бы выбрал std::tr1::tuple
вместо vector
или массив. Это шаблонный класс, так что вы захотите ввести его по-следующему:
typedef std::tr1::tuple<double, double, double, double, double, double> six_tuple;
Используйте make_tuple()
с соответствующим числом (и типом) аргументов для создания кортежа, возвращаемого вашей функцией, и доступа к его содержимому с помощью шаблонной функции get<N>()
, например ::
six_tuple foo = std::tr1::make_tuple(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
std::cout << std::tr1::get<0>(foo) << std::endl; // prints '1.0'
Компилятор проанализирует количество и типы аргументов для make_tuple()
и выдаст ошибку, если вы попытаетесь присвоить неправильный тип кортежа.
Я предпочитаю это самому управлять памятью, но ваш пробег может отличаться.