![]() |
|
![]() ![]() ![]() |
|
ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
Есть в библиотеке стандартных шаблонов такой алгоритм как Unique-по идее он удаляет все повторяющиеся элементы.
Есть ли какаиенибудь ограничения или особенности при сипользовонии этой функци. У меня она почемуто не работает.
-------------------- Жизнь есть. |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 1 Всего: 92 |
||||
|
||||
ano360 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
дубликаты не удаляются. Просто не удаляются, как были, так и остаются.
Да. там просто ОЧЕНЬ много всякого када, на имеющего к проблеме отношения. массив точно заполняется, сразу после вызова unique, у меня след. код.
Да, и вот ещё странность-vectorTemp не чистится, но это пока не доказано Добавлено @ 19:22
при запуске следующего выводятся 2 идентичные строки: 2 2~ 2 3~ 2 4~ 3 2~ 3 4~ 4 2~ 3 2~ 3 4~ 4 2~ 4 4~ 5 2~ 5 3~ 5 4~ 4 4~ 2 2~ 2 3~ 2 4~ 3 2~ 3 4~ 4 2~ 3 2~ 3 4~ 4 2~ 4 4~ 5 2~ 5 3~ 5 4~ 4 4~ -------------------- Жизнь есть. |
||||||
|
|||||||
ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
кстати, вариант запуска unique(vectorTemp.begin(),vectorTemp.end()); у меня не работает, ыдаёт ошибку и посылает к исходникам, хотя operator== для ТРКордс, как вы видете, определён.
У кого есть какие идеи? Даже самые безумные -------------------- Жизнь есть. |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 1 Всего: 92 |
посмотрите комментарии в этом примере, здесь говорится про последовательные элементы:
|
|||
|
||||
ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
Это всё,конечно, здорово, и я вспомнил как пользоваться промтом, но мне это чёто не очень помогло.
Мож я тупой? или уникуе удаляет только одинаковые эл-ты, стоящие друг за другом? Это сообщение отредактировал(а) ano360 - 23.1.2007, 20:06 -------------------- Жизнь есть. |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 1 Всего: 92 |
||||
|
||||
ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
в чаком случае мне проще будет самому написать ф-ю удаления повторяющихся э-тов.
-------------------- Жизнь есть. |
|||
|
||||
ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
А как получить интератор элемента вектора с опред номером. допустим 3 его эл-та?
Я тут функцмю сортировки накидал, вдруг кому понадобится, только необходимо знать интератор эл -та
Это сообщение отредактировал(а) ano360 - 23.1.2007, 20:51 -------------------- Жизнь есть. |
|||
|
||||
segmentation_fault |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 14.2.2005 Где: в интернете Репутация: нет Всего: 1 |
ano360, итератор определяется так:
Но твоя функция не будет работать, т.к. после удаления элементов, размер вектора уменьшается, так что твой цикл
будет указывать за пределы вектора. Если порядок элементов вектора не принципиален, можешь сделать так: создай сет, скопируй туда содержимое вектора, очисти вектор и скопируй туда содержимое сета. Одинаковые элементы в сет не копируются, так что получишь то, что хотел. |
||||
|
|||||
Vyacheslav |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Про unique
1. Во-первых он "удаляет" смежные дубликаты 2. А во-вторых, он реально ничего не удаляет, как и любой remove-подобный алгоритм. Он просто перемещает дубликаты за логический конец и возвращает итератор этого логического конца. Причем, что самое неприятное, никто при этом не гарантирует, что в результате перемещения, часть перемещаемых элементов не исчезнет. Поэтому вызов такого рода грубейшая ошибка
Чтобы происходло реальное удаление смежных дубликатов следует использовать связку erase-unique
-------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
ano360,
у этой сортировки сложность n^2 , логичней использовать встроенную в stl сортировку |
|||
|
||||
ano360 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
А конкретней? Если вы имеете ввиду sort Это сообщение отредактировал(а) ano360 - 24.1.2007, 17:37 -------------------- Жизнь есть. |
|||
|
||||
ano360 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 22.5.2006 Где: Москва Репутация: нет Всего: нет |
Вот конечный вр-т:
Добавлено @ 17:41
Что вы имели ввиду? про с ложность n^2. Это как? Это сообщение отредактировал(а) ano360 - 24.1.2007, 17:41 -------------------- Жизнь есть. |
||||
|
|||||
stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
сложность алгоритма - n^2 в то время как средняя сложность алгоритма встроенного sort составляет n * log n где n количество сортируемых элементов в массиве. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |