![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| rumit7 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.6.2011 Репутация: 6 Всего: 7 |
Можете объяснить задачу по конкретнее, а то это похоже на поиск черной кошки в черной комнате.. Нам обязательно искать решение в рамках существующего кода? Если да, то тогда мне не понятна связь между типами "T" и "item_t" если Вы так запросто выполняете преобразование из "T*" в "item_t*":
Да и вообще, зачем нам метод "exists"? Я правильно понимаю, что это больше для самопроверки, чтобы item из одного array-я не удалить случайно из другого. Тогда в этих целях нужно использовать этот загадочный "ID". Его ведь не зря там указывают!? Ну в общем было бы легче, если бы Вы пояснили нам что конкретно решаем.. |
||||||
|
|||||||
| boostcoder |
|
||||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
так и сделал. оператор индекса нужен.
что конкретно не понятно? да. с минимумом изменений. каждый Т является наследником item_t.
да.
этот ID всего лишь позволяет T узнать его собственный индекс в контейнере. Добавлено через 2 минуты и 53 секунды newbee, как уже говорил - код чужой. свобода действий ограничена. по поводу хеш-контейнеров: подходит std::set. но у него нет оператора индекса. использование std::map повлечет большие изменения в коде. |
||||||||
|
|||||||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
вот что получилось:
http://liveworkspace.org/code/1dca57b8401c...c10861f7e910c24 вывод:
вот только не уверен на счет эффективности.. будут предложения? Это сообщение отредактировал(а) boostcoder - 12.2.2012, 17:22 |
||||
|
|||||
| rumit7 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.6.2011 Репутация: 6 Всего: 7 |
Мне одному кажется что здесь ошибка
т.к. item_ это
Это сообщение отредактировал(а) rumit7 - 12.2.2012, 17:31 |
||||||
|
|||||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
точно Добавлено @ 17:41 но работает жо! новый тест. оптимизировал вставку первого и второго элементов:
http://liveworkspace.org/code/5bf40dd59dd9...323870ae99873cc вывод:
Это сообщение отредактировал(а) boostcoder - 12.2.2012, 17:58 |
||||
|
|||||
| rumit7 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.6.2011 Репутация: 6 Всего: 7 |
Я все же имел ввиду ID, а не array_index. Думаю автор кода хотел использовать его для тех же целей, для которых Вы сейчас используете двоичный поиск - "для самопроверки, чтобы item из одного array-я не удалить случайно из другого" Как-то так.. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| rumit7 |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.6.2011 Репутация: 6 Всего: 7 |
Вот здесь я прикинул как это могло бы выглядеть. Добавлено через 7 минут и 29 секунд
Еще одна вещь: зачем public наследовать от item_t, а потом в коде явное преобразовывать в базовый:
Разве не проще так:
|
||||||||||
|
|||||||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
для того чтоб образовать стойкий ABI. указатели передаются меж процессов. |
|||
|
||||
| rumit7 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.6.2011 Репутация: 6 Всего: 7 |
И что ABI требует чтобы указатель на объект наследника был явно преобразован в указатель на базовый класс? А просто вызвать метод index() базового класса нельзя!? Это сообщение отредактировал(а) rumit7 - 12.2.2012, 19:10 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
не понял..
из процесса я получаю указатель на void Добавлено через 1 минуту и 7 секунд rumit7, к тому же, код не мой. не терроризируй |
|||
|
||||
| rumit7 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.6.2011 Репутация: 6 Всего: 7 |
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |