383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
1 | |
Есть лёгкий способ отсортировать?27.06.2014, 19:42. Показов 1337. Ответов 15
Метки нет (Все метки)
Вобщем есть 3 вектора одинаковой размерности. Нужно отсортировать первый вектор, а остальные два точно также, то есть если в первом векторе 5 элемент после сортировки стал вторым, то также должны поступить и остальные два вектора. |
Есть идеи как это сделать без особых заморочек?
0
|
27.06.2014, 19:42 | |
Ответы с готовыми решениями:
15
Есть ли способ просмотреть код библиотечных функций? Есть ли способ доступа к элементу списка по индексу? Есть ли более удобный способ перевода переменную в строку? Есть ли способ получить доступ к MS Office color picker |
Модератор
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,698
|
|
27.06.2014, 19:51 | 2 |
1 способ.При перестановки элементов основного массива переставляйте элементы второго и третьего.
2 способ.Заведите дополнительный массив, в который записывайте номер элемента, который оказался на переставленном месте. Т.е. в начале в нем числа 0,1,2...., если меняете 1 со 2 получаете 0,2,1,3... и т.д. Тогда после сортировки будет известно, какой элемент поставить на какое место.
1
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
27.06.2014, 20:02 [ТС] | 3 |
zss, спасибо, но это с заморочками то есть нужно свой алгоритм сортировки писать, мне бы вот средствами STL
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
27.06.2014, 20:05 | 4 |
gromo, тупой и не очень эффективный способ - свалить все векторы в один вектор структур из трех полей, отсортировать по первому полю, результат обратно распределить по векторам.
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
27.06.2014, 20:10 [ТС] | 5 |
0x10, а можно подробнее, что-то не пойму, вектор каких структур?
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||
27.06.2014, 20:17 | 6 | |||||
1
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
27.06.2014, 20:36 [ТС] | 7 |
0x10, Ого, вот это я понимаю жесткий способ отсортировать
В моем случае вектор будет от силы на 20 элементов, может для такого и правда дешевле будет написать/содрать какую-нибудь примитивную сортировку и просто проранжировать одновременно 3 массива, как сказал zss ? Да и лучше emplace_back() использовать в 15 строке, не так ли? Но идея оригинальная ничего не скажешь
0
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
|
|
27.06.2014, 20:41 | 8 |
академическая задачка? баблсорт сделайте, если да.
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
27.06.2014, 20:44 [ТС] | 9 |
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
27.06.2014, 20:45 | 10 |
emplace, предварительно еще reserve на это безобразие. Я ж на автомате накатал.
Да то же самое, что zss предлагал вторым способом, только вместо одного массива индексов хранится N массивов копий объектов, что, понятно, затратно по памяти. Как удобнее. Мне было бы влом писать свой алгоритм, и успокоился бы на сортировке вектора пар, где первый элемент пары - объект из массива, второй - его индекс в неотсортированном массиве.
1
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
|
|
27.06.2014, 20:47 | 11 |
а мапу если поюзать?
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
27.06.2014, 21:13 [ТС] | 13 |
0
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
|
|
27.06.2014, 21:17 | 14 |
ключи - элементы первого массива, значения- пары соответствующих указателей на элементы из 2 и 3 массивов. хотя этот вариант принципиально особо ничем не отличается от выше описанных.
Добавлено через 1 минуту вообще, если возникла задача соответствия, может архитектура построена немного неправильно?
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
27.06.2014, 21:19 [ТС] | 15 |
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
28.06.2014, 06:19 | 16 |
Разница в том, что сам контейнер map - немножко не для сортировки. Красно-черное дерево - самобалансирующаяся структура для поиска. Т.е. варианты типа сложить все элементы, чтобы потом перекинуть в линейную структуру - просто использование не по назначению. А если говорить более формально, то с использованием мапы получаем аллокации на каждый элемент, ребалансировку при вставке. Деревья, конено же, можно использовать для сортировки, но в конкретно данном случае повода не вижу.
0
|
28.06.2014, 06:19 | |
28.06.2014, 06:19 | |
Помогаю со студенческими работами здесь
16
Есть ли более правильный и элегантный способ реализации функции? Замена двух строк в огромном файле. Есть ли оптимальный способ? Есть ли способ проверить, сколько указателей указывают на определённую область памяти? Анализ данных с COM порта. Есть ли способ чтения файла в процессе его изменения? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |