Я использую библиотеку физики частиц, написанную на C++ для игры.Сортировка массива структур в C++
Для того, чтобы привлечь частицы я должен получить массив всех своих позиций, как так ..
b2Vec2* particlePositionBuffer = world->GetParticlePositionBuffer();
Это возвращает массив объектов b2Vec2 (которые представляют 2 мерные векторы в физическом движке).
Также я могу получить и установить их цвет, используя
b2ParticleColor* particleColourBuffer = world->GetParticleColorBuffer();
Я хотел бы получить 10% частиц с высокими значениями Y (а затем изменить их цвет)
Моя идея ..
1. Сделайте массив структур равным размеру массива particlePositionBuffer, структура просто содержит int (индекс частиц в массиве particlePositionBuffer) и float (положение y частиц)
2. Затем я сортирую массив по позиции y.
3. Затем я использую int в структуре из 10 лучших структур в моем массиве struct, чтобы делать материал своим цветом в массиве particleColourBuffer.
Может ли кто-нибудь показать мне, как сортировать и массивы таких структур, как в C++?
Как вы думаете, это достойный способ обойти это? Мне нужно сделать это только один раз (не каждый кадр)
Что случилось с 'станд :: sort'? Напишите функцию-компаратор или перегрузите 'operator <' в вашей структуре.Кроме того, небольшая nitpick, я предполагаю, что «векторные векторные объекты» ссылаются на нечто вроде '2dvector', а не' std :: vector'. Можете ли вы изменить свой вопрос, потому что я изначально был смущен. –
Да, я видел этот вопрос с очень хорошим ответом. http://stackoverflow.com/questions/873715/c-sort-with-structs Единственное, что он говорит, что это для контейнера STL, а не для массива (я не знаю, что такое контейнер STL) –
@remyabel: BTW, 'std :: nth_element' (или' std :: partial_sort') достаточно. – Jarod42