|
|
|
Вектора обьектов класса. Максимальный элемент.
|
|||
|---|---|---|---|
|
#18+
Задумка такая. Есть вектор обьектов класса. Класс содержит члены типа int. Необходимо найти максимальное значение определенного члена среди обьектов вектора. Для этого хотелось бы написать функцию. Но не понятно какие параметры ей передавать. Если в качестве параметра передавать вектор, то тогда такие функции прийдется писать для каждого члена класса. В качестве упрощеного примера: Описание класса Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Route1, Route2, Route3, Route4, Route5, Route6. Например, функция MaxElement для члена Route1 могла бы быть такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 15:54 |
|
||
|
Вектора обьектов класса. Максимальный элемент.
|
|||
|---|---|---|---|
|
#18+
Надо модернизировать RouteRec. Или массив интов делать, или сделать в нем метод доступа к свойству класса по индексу. Кстати, можно делать не метод, а отдельную функцию, которая по индексу будет возвращать указатель или ссылку на свойство: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 16:32 |
|
||
|
Вектора обьектов класса. Максимальный элемент.
|
|||
|---|---|---|---|
|
#18+
Без модернизации класса или дополнительной функции действительно не обойтись. Просто так по имени члена ссылку на него в С++ не получить. Кстати, советую для поиска использовать стандартные средства. Примерно так (компилятора под рукой нет, возможны опечатки) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 17:12 |
|
||
|
Вектора обьектов класса. Максимальный элемент.
|
|||
|---|---|---|---|
|
#18+
Ну и последний штрих, чтоб точно никто ничего не понял:) template<> bool less<Parts>(const Parts & first, const Parts & second) { return less(first.Route1, second.Route1); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 18:07 |
|
||
|
Вектора обьектов класса. Максимальный элемент.
|
|||
|---|---|---|---|
|
#18+
_Andrew_NЗадумка такая. Есть вектор обьектов класса. Класс содержит члены типа int. Необходимо найти максимальное значение определенного члена среди обьектов вектора. Для этого хотелось бы написать функцию. Но не понятно какие параметры ей передавать. Если в качестве параметра передавать вектор, то тогда такие функции прийдется писать для каждого члена класса. В качестве упрощеного примера: Описание класса Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Route1, Route2, Route3, Route4, Route5, Route6. Например, функция MaxElement для члена Route1 могла бы быть такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Можно Route1,Route2,Route3, Route4,Route5,Route6 хранить кадый в своем сортированном вектрторе, а в RouteRec хранить их индексы. Указатели на эти вектора вожно хранить в отдельном векторе и по его индексу выбирать номер необходимого Route. Так искать можно будет быстрее. Но добавлять дольше. Можно завести мультимапы. Для этого создается класс-интерфейс который будет хранится в мультимапе. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Для каждого RouteRecIf1, RouteRecIf2 ..... создается обьект multimap При добавлении элемента Parts он должен создать соответствующие RouteRecIf и разместить их в в соответствующем multimap. Каждый Route будет отсортирован в мультимапе автоматически через класс-интерфейс. Поиск минимального максимального или вообще по значению Route будет производится довольно быстро. Указатели на мультимапы можно тоже держать в векторе где индекс соответствует номеру Route. Если сумбурно получилось, и есть вопросы задавайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 19:41 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34361570&tid=2029347]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
151ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 486ms |

| 0 / 0 |
