|
|
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
Пользую boost. Есть структура struct row { std::string Org; double Sum; int ID; }; Есть динамический массив структур std::vector <row> t; И есть функция для упорядочивания Код: plaintext 1. 2. 3. 4. 5. 6. Упорядочиваю так Код: plaintext Хочтелось бы еще передавать в функцию сортировки какой именно элемент структуры нужно сортировать, ну там Org, sum или ID - как это можно сделать? Я голову уже сломал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 10:28:23 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
Можно ввести функциональный объект (вроде так он называется) в конструкторе ему передаешь параметры. Самого оспользуешь вместо буста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 10:27:50 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
авторМожно ввести функциональный объект (вроде так он называется) в конструкторе ему передаешь параметры. Самого оспользуешь вместо буста. А примерчик можно, а то у меня как раз это и не выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 10:56:54 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
Borr авторМожно ввести функциональный объект (вроде так он называется) в конструкторе ему передаешь параметры. Самого оспользуешь вместо буста. А примерчик можно, а то у меня как раз это и не выходит. а чего там может не выходить Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Только вот нахрен это надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 11:19:11 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
Я чего-то недопонял. У меня несколько структур в которых по 10-15 элементов. Мне нужно передать в функцию какой именно элемент структуры нужно сортировать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Из вашего примера я вижу только решение проблемы направления сортировки asc = 0, desc = 1 а с полем как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 11:35:04 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
BorrЯ чего-то недопонял. У меня несколько структур в которых по 10-15 элементов. Мне нужно передать в функцию какой именно элемент структуры нужно сортировать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Из вашего примера я вижу только решение проблемы направления сортировки asc = 0, desc = 1 а с полем как быть? Вы передаете в sort не функцию а объект. В конструкторе объекта вы передаете все параметры которые вам нужны. Например id поля по которому сортировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 12:17:32 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
Не поймите превратно, по перегрузке оператора > или < и по свободной функции примеров полно. Об этом и в книгах не пишут. Прошу напишите поразвернутей пример или носом в ссылку ткните. blinded ваш код я даже придумать не могу куда пристроить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 13:14:22 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
BorrНе поймите превратно, по перегрузке оператора > или < и по свободной функции примеров полно. Об этом и в книгах не пишут. Прошу напишите поразвернутей пример или носом в ссылку ткните. blinded ваш код я даже придумать не могу куда пристроить. Читать надо не про перегрузку оператра, а про объекты-функции и предикаты. Функция std::sort как раз его и получает в 3-м параметре. Развернутей пример чем написал blinded сложно представить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 13:24:16 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
Разворачиваю std::sort в качестве 3 параметра потребляет объект называемый функтором у которого перегружен опреатор : bool () (const T&, const T&) по умолчанию туда пихают less. но можно пихнуть и что-нибудь другое, в частности boost::bind - это тоже функтор, в конце-концов можно посмотреть его исходники ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 13:35:18 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
Akh и blinded спасибо огромное, заработало именно как хотелось . Я сразу за деревьями леса не увидел + boost теперь не нужен. Остался один вопрос blindedТолько вот нахрен это надо? Как это? Почему не надо это же гораздо удобнее чем 15-30 однотипных функций... или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 13:47:13 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
1) это не очевидно, и как следствие увеличивает вероятность ошибки 2) э то медленнее чем писать руками Лучше написать компараторов типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 14:17:26 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
blinded Лучше написать компараторов типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Тут у меня тоже проблема: если struct и vector с компараторами (простыми функциями) в cpp файле все нормально. А мне нужно в public vector засунуть - запихиваю в раздел public (или private) struct и vector - это заголовочный файл (h) и все даже не компилиться. Я из-за этого в boost и полез. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 14:47:03 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Прошу прощения и тут я недочитал - простая функция, в таком случае, должна быть тогда объявлена как static ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 15:01:55 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
Ну яснен пень, на нее же указатель должен быть... Так в что в cpp ee или пиши классы-компараторы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 16:18:40 |
|
||
|
vector, struct и сортировка
|
|||
|---|---|---|---|
|
#18+
авторНу яснен пень, на нее же указатель должен быть... Так в что в cpp ee или пиши классы-компараторы Или сделать статиком эту функцию. Мне тут показали как с boost'ом это в одну строчку сделать Код: plaintext 1. 2. 3. 4. 5. 6. 7. Спасибо, k3Eahn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 16:34:44 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=277&tid=2028170]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 358ms |

| 0 / 0 |
