На мой взгляд, это зависит от того, является ли факт, что это 4 int
s является случайным или если он исходит из того, что это тот же тип данных.
Предпочитаете array
, если это связанные номера, которые должны иметь одинаковый тип (например, оценки, которые студент имеет на 4 экзаменах). Вы можете перебирать на них, их типы связаны между собой ...
tuple
Предпочитают или struct
/class
если эти 4 int
s, которые не связаны, как правило, не имеют одинаковый размер (например, сопротивление, максимальное напряжение, длина ... резистора).
Еще один способ решить, можете ли вы в какой-то момент в будущем изменить тип одного из значений, а не других?
Теперь, конечно, есть случаи на краю. Например, как насчет длины, ширины и высоты коробки? Все они имеют одинаковый размер (например, метры), но они имеют различный смысл. Итерация на них на самом деле не имеет большого смысла. Это зависит от того, как вы используете его в своем коде и как вы видите данные, с которыми работаете.
Лично в большинстве случаев, где может использоваться tuple
, я бы предпочел использовать class
, поскольку он обеспечивает гораздо более читаемый код и гораздо большую гибкость для эволюции: вы предоставляете значимые имена, вы выбираете видимость атрибутов, вы можете инкапсулировать информацию, вы можете хелперы поставщик методы ...
Такой код:
BoxSize clothesBoxSize(5, 4, 10);
double volume = clothesBoxSize.Volume();
Или даже, если вы хотите, чтобы предотвратить смешивание ширину, длину и высоту (см пункт 18 Скотта Майерса 'Effective C++
):
BoxSize clothesBoxSize(Length(5), Width(4), Height(10));
double volume = clothesBoxSize.Volume();
является более удобным для чтения, проверяемым и maintanable (на мой взгляд), чем:
std::tuple<int, int, int> clothesBoxSize{5, 4, 10};
double volume = clothesBoxSize[0] * clothesBoxSize[1] * clothesBoxSize[2];
И может быть решение * некоторые * проблема ... и теперь все зависит от того, что * * конкретная проблема вы сталкиваетесь. Обратите внимание, что все проблемы не равны, так же как все решения не равны. – Nawaz
Зависит от того, как вы будете их использовать. – marom
В чем проблема? –