![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
всем привет!
имеется некоторый чужой код:
эдакий хитрый контейнер-гибрид вектора с стека. нужно добавить метод максимально быстрого определения наличия указателя в этом контейнере:
тип items_t изменять нельзя. сортировать items нельзя. идеи? |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
boostcoder, вопрос то в чем ? как быстрей всего в неотсортированном массиве найти нужное значение?
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
да нет же! хотел поинтересоваться, как у Вас дела? что нового? и про сабж заодно узнать. Это сообщение отредактировал(а) boostcoder - 11.2.2012, 18:28 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а ну так бы сразу и сказали |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
вот я дурень
это же вектор. его адреса располагаются непрерывно. достаточно проверить указатель на предмет его вхожести в диапазон адресов вектора. Добавлено через 51 секунду вот и славно да вот. туплю по полной Добавлено через 5 минут и 39 секунд
так нет же. таким образом я получу адреса самих указателей, а не того на что они указывают. говорю же, туплю.. Добавлено через 10 минут и 25 секунд вариант - хранить в векторе сами объекты. но нельзя. они не копируемые. да и побочных правок ода наверняка будет огого... |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
просто интересно, а зачем item'у этот ID ? или это - не весь код ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
самому любопытно. код-то не весь. но в любом случае этот параметр никак и нигде не используется. а по сабжу будут идеи, кроме как сравнением со всеми элементами вектора? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
тоже думал об этом. тогда уж лучше "вопрошать" к смене вектора на множество) |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ну я подумал, что возможно на тех уроках что я прогулял, именно об этом и говорили. мало-ли т.е. получается так, что если хранить указатели в множестве, тогда, разыменовав первый я получу нижний адрес, а разыменовав последний - верхний. так? но это только пол беды. то, что указатель входит в диапазон, еще не говорит о том, что он там есть. придется использовать std::set::find... |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
boostcoder, чем не устраивает сортированный вектор ?
Добавлено через 1 минуту и 33 секунды
множество это дерево ? первый это бегин(), а последний енд() ? тогда не верно .. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
да. front() и back(). не? т.е. в нем будут лежать указатели, отсортированно. Добавлено через 8 минут и 41 секунду если Вы про сортировку вектора перед вставкой - то нехорошо. элементы очень часто вставляются/удаляются. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 4 Всего: 19 |
boostcoder, твоя задача сводится к поиску по контейнеру, лучше по хэшу или (само?)сбалансированному дереву. В зависимости от частоты вставок и поиска можно повыбирать среди деревьев.
-------------------- You're face to face With man who sold the world |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |