
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.09.2007, 10:28:23
|
|||
|---|---|---|---|
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 - как это можно сделать? Я голову уже сломал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2007, 10:27:50
|
|||
|---|---|---|---|
vector, struct и сортировка |
|||
|
#18+
Можно ввести функциональный объект (вроде так он называется) в конструкторе ему передаешь параметры. Самого оспользуешь вместо буста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2007, 10:56:54
|
|||
|---|---|---|---|
vector, struct и сортировка |
|||
|
#18+
авторМожно ввести функциональный объект (вроде так он называется) в конструкторе ему передаешь параметры. Самого оспользуешь вместо буста. А примерчик можно, а то у меня как раз это и не выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2007, 11:19:11
|
|||
|---|---|---|---|
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:35:04
|
|||
|---|---|---|---|
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, 12:17:32
|
|||
|---|---|---|---|
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, 13:14:22
|
|||
|---|---|---|---|
vector, struct и сортировка |
|||
|
#18+
Не поймите превратно, по перегрузке оператора > или < и по свободной функции примеров полно. Об этом и в книгах не пишут. Прошу напишите поразвернутей пример или носом в ссылку ткните. blinded ваш код я даже придумать не могу куда пристроить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2007, 13:24:16
|
|||
|---|---|---|---|
vector, struct и сортировка |
|||
|
#18+
BorrНе поймите превратно, по перегрузке оператора > или < и по свободной функции примеров полно. Об этом и в книгах не пишут. Прошу напишите поразвернутей пример или носом в ссылку ткните. blinded ваш код я даже придумать не могу куда пристроить. Читать надо не про перегрузку оператра, а про объекты-функции и предикаты. Функция std::sort как раз его и получает в 3-м параметре. Развернутей пример чем написал blinded сложно представить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2007, 13:35:18
|
|||
|---|---|---|---|
vector, struct и сортировка |
|||
|
#18+
Разворачиваю std::sort в качестве 3 параметра потребляет объект называемый функтором у которого перегружен опреатор : bool () (const T&, const T&) по умолчанию туда пихают less. но можно пихнуть и что-нибудь другое, в частности boost::bind - это тоже функтор, в конце-концов можно посмотреть его исходники ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2007, 13:47:13
|
|||
|---|---|---|---|
vector, struct и сортировка |
|||
|
#18+
Akh и blinded спасибо огромное, заработало именно как хотелось . Я сразу за деревьями леса не увидел + boost теперь не нужен. Остался один вопрос blindedТолько вот нахрен это надо? Как это? Почему не надо это же гораздо удобнее чем 15-30 однотипных функций... или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2007, 14:17:26
|
|||
|---|---|---|---|
vector, struct и сортировка |
|||
|
#18+
1) это не очевидно, и как следствие увеличивает вероятность ошибки 2) э то медленнее чем писать руками Лучше написать компараторов типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2007, 14:47:03
|
|||
|---|---|---|---|
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, 15:01:55
|
|||
|---|---|---|---|
vector, struct и сортировка |
|||
|
#18+
Код: plaintext Прошу прощения и тут я недочитал - простая функция, в таком случае, должна быть тогда объявлена как static ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2007, 16:18:40
|
|||
|---|---|---|---|
vector, struct и сортировка |
|||
|
#18+
Ну яснен пень, на нее же указатель должен быть... Так в что в cpp ee или пиши классы-компараторы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2007, 16:34:44
|
|||
|---|---|---|---|
vector, struct и сортировка |
|||
|
#18+
авторНу яснен пень, на нее же указатель должен быть... Так в что в cpp ee или пиши классы-компараторы Или сделать статиком эту функцию. Мне тут показали как с boost'ом это в одну строчку сделать Код: plaintext 1. 2. 3. 4. 5. 6. 7. Спасибо, k3Eahn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=Guest0&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
185ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 430ms |
| total: | 747ms |

| 0 / 0 |
