Итак, давайте предположим, что есть проект, связанный с обработкой изображений. У нас есть алгоритм, который вычисляет «баллы» (независимо от того, что это) между двумя изображениями так:
double score(Image i1, Image i2)
Если у нас есть несколько кадров (изображений), мы хотим рассчитать его для всех них(соответствует всем всем):
std::vector<std::pair<std::pair<int, int>, double>> score(std::vector<Image> images); // [1]
( пары целых чисел представляют индексы изображения в векторе изображений, потому что мы сопоставляем все со всеми )
К сожалению, мы получаем нашизображения со многих устройств, где каждое из них может иметь несколько потоков (а затем несколько последовательных кадров из каждого потока), что усложняет этот уровень:
std::vector<std::vector<std::vector<std::pair<std::pair<int, int>, double>>>>
^devices ^streams ^frames ^score ^image indices
Как бы вы работали с функцией, которая имеетвернуть такой сложный тип?
Речь идет только о том, чтобы обернуть его в typedefs и правильно назвать? Или, может быть, вы бы позволили пользователю использовать более простую версию API, то есть с одним вектором [1], и дополнительно обернуть его самостоятельно? А может, есть какой-нибудь причудливый узор для такого случая?