Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Падает ИндексированнаяТаблица :( (число прочтений - 5496 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Падает ИндексированнаяТаблица :(
Ответ #15 - 12. Февраля 2008 :: 16:41
Печать  
У основного индекса уровень затрат на добавление const, можно не учитывать.
На удаление - скорее всего, линейные затраты, пропорционально длине хвоста.

Ну, в любом случае, это сильно проще, чем перестраивать дерево.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Падает ИндексированнаяТаблица :(
Ответ #16 - 13. Февраля 2008 :: 04:42
Печать  
Человеку, привыкшему работать с массивами, нельзя давать в руки итераторы...

правильно будет вот так:
Код
Выбрать все
while( Iterator != Vector.end() )
{
	if( *Iterator == row_num )
	{
		[b]Iterator = Vector.erase(Iterator);[/b]
		vector_erased = true;
		node->Count--;
	}
	else
	{
		if( *Iterator > row_num )
		{
			*Iterator += delta;
		}
		[b]Iterator++;[/b]
	}
}
 

  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Падает ИндексированнаяТаблица :(
Ответ #17 - 13. Февраля 2008 :: 07:52
Печать  
О, точно! Это прямо пример из умных книжек.

Должен оканчиваться как-то так:
- поэтому везде где возможно, должны применяться алгоритмы и функциональные объекты, в данном случае erase(remove_if) с последующим for_each.

Работать будет, скорее всего, быстрее, но для понимания проще не станет. Улыбка

P.S.
Ну все, для ИТ годовой план по исправлению багов выполнен Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать