typedef struct Freqamp {double freq; двойной усилитель; } FREQAMP; bool struct_cmp_by_freq (FREQAMP a, FREQAMP b) {return a.freq & lt; b.freq; } main () {vector & lt; FREQAMP & gt; темп; FREQAMP freqAMP; freqAMP.freq = 330; freqAMP.amp = 117,56; temp.push_back (freqAMP); freqAMP.freq = 450; freqAMP.amp = 99,56; temp.push_back (freqAMP); freqAMP.freq = 110; freqAMP.amp = 106,56; temp.push_back (freqAMP); sort (temp.begin (), temp.end (), struct_cmp_by_freq); }
, если сравнение ложно, оно будет «обмениваться».
Параллельные массивы - это отсрочка от таких языков, как Basic (исходная), у которых не было никаких структур данных, кроме массивов. Вы должны определить объекты, как вы предлагаете, вместо этого.
Классы более приятные, но если прецедент ограничен, например. один метод тела, расточительно его создавать. Если у вас есть класс Pair , вы можете специализироваться на этом, не создавая новый класс.
Единственное реальное преимущество параллельных массивов в Java - это (экстремальная) IMO, чтобы уменьшить распределение объектов и / или использование кучи. Для достаточно большой коллекции объектов 3 массива занимают меньше места И используют меньше объектов, чем один массив экземпляров какого-либо настраиваемого класса.
Этот подход обычно является плохим, поскольку он делает ваш код много более хрупким. Создание и использование пользовательского класса - лучший подход в большинстве ситуаций.
Примечание: Рекомендации по производительности для Android советуют иначе, но эти советы в основном направлены на снижение частоты / воздействия GC приостанавливает работу пользователя. И даже этот совет замаскирован несколькими способами.
«Если вам нужно реализовать контейнер, в котором хранятся кортежи объектов (Foo, Bar), попробуйте вспомнить, что два параллельных массива Foo [] и Bar [] обычно намного лучше, чем один массив пользовательских (Foo, Bar) объектов. & quot;
developer.android.com/training/articles/perf-tips.html
– loeschg
7 January 2013 в 16:44
Создать представление класса / объекта, только если то, что вы пытаетесь представить, может быть лучше объяснено как объект.
Хэш-карты - еще одно решение. Например, вместо разнородных массивов для возрастов и имен, если имена уникальны, вы можете использовать имя как ключи и возраст в качестве значения.