|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||||||||||||||||||||
Ошибка при использовании erase для std::vector21.12.2016, 10:28. Показов 6175. Ответов 55
Метки нет (Все метки)
Почему в случае удаления элемента из вектора с помощью передачи итератора в erase, который соответствует позиции удаляемого элемента возникает ошибка(сегфолт)?
Но при этом с той же позиции итератора которая приводит к сегфолту при удалении, получается вывести значение Т.е при очистки элемента получаем сегфолт, а при выводе значения адрес каким то образом оказывается валидным и значение выводится успешно
Добавлено через 11 минут Вот, может так будет нагляднее
0
|
||||||||||||||||||||||
| 21.12.2016, 10:28 | |
|
Ответы с готовыми решениями:
55
std::vector::erase
Ошибка “vector<bool> erase iterator outside range” при работе алгоритма Хаффмана |
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 23.12.2016, 10:42 | |
|
Не знаю, мне кажется, что при изучении программирования надо сначала язык освоить, потом проектирование, а уже потом постигать тонкости оптимизации.
Автор же пока язык не очень освоил, и от его темы попахивает дурно спроектированной программой, но с ним как с большим все о тонкостях оптимизации дискутируют!
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||
| 23.12.2016, 10:58 [ТС] | |||
0
|
|||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|||
| 23.12.2016, 11:12 | |||
|
Поэтому человек, не умеющий обращаться со стандартными контейнерами, языка таки не знает. Мне же, например, после десятка выших сообщений не только не понятно что вам нужно, но с каждым вашим сообщением становится все непонятнее.
0
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||
| 23.12.2016, 11:21 [ТС] | |||
![]() Даже замечал что опытные программисты часто обходят STL стороной из за его неэффективности для их задач(в некоторых случаях) Может способ изложения вам не ясен Но это вовсе не значит что данная реализация плохая
0
|
|||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|||
| 23.12.2016, 11:39 | |||
Ну, сейчас-то она есть, и основная часть языка таки в ней содержится!Кстати, Степанов (создатель STL) считает, что главное в программе - это алгоритмы, а не данные, и он писал STL именно ради создания обобщенных алгоритмов. Поэтому знать STL, а следовательно C++, - это означает знать стандартные алгоритмы и уметь ими пользоваться. А то иногда забавно бывает видеть как человек, изучив только контейнеры, начинает их циклами мучить. Поэтому мне кажется, что ваш вопрос в теме логичнее было бы так сформулировать: мне в моем проекте привиделся вот такой жуткий контейнер. Помогите спроектировать по-человечески!
0
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||
| 23.12.2016, 11:45 [ТС] | ||||
|
Просто не хочу флудить в теме дабы не отходить от основной проблемы Но если детально опишу ситуацию где это нужно и попытаюсь объяснить по другому(что бы и вы поняли) необходимую реализацию думаю вы меня поймете и скорее всего согласитесь
0
|
||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 23.12.2016, 15:29 | ||
Сообщение было отмечено Undisputed как решение
Решение
Ссылку я тебе дал, что бы ты прочитал и сам проанализировал подойдет ли хеш-таблица под твои требования или нет. Ты должен понять, что лучше всего, когда это будет сделано тобой, чем кем-то еще (даже если он лучше разбирается), потому что в конечном счете личный опыт - бесценен.
Сейчас ты потихонечку приходишь к мысли о взаимоисключающих параграфах. О том, что можно компенсировать скорость доступа через дополнительную память, или о том, что в условиях ограниченной памяти идеальную скорость доступа не всегда возможно обеспечить. Это как раз то, о чем я говорил, когда писал про "все бесплатно". В том смысле, что довольно часто нам приходится за что-то платить либо скоростью, либо памятью, либо и тем и другим, для достижения условно-идеального решения для нашей ситуации. А идеальное решение во всех отношениях возможно только в очень узких случаях, да и то не всегда. Поэтому лично мне представляется, что в условиях фиксированной памяти для общего случая будет сложно обеспечить скорость поиска лучшую, чем O(log(N)), что в большинстве случаев довольно неплохо. Все более скоростные решения требуют дополнительных затрат на выделение памяти. Кстати вот есть такая иллюстрация к совету 23 из книги Мейерса, это к вопросу о сортированных векторах. И все-таки, ругать тебя за бег впереди паровоза я, конечно, не буду, но хочу донести одну мысль еще раз: чтобы сделать хорошее решение, которое будет близко к идеальному, нужно представлять спектр возможных подходов к решению задачи. В "скучных" книгах по алгоритмам дается эта база. Я не очень представляю как можно писать реализацию хеш-таблицы, или сколь-нибудь эффективную реализацию аллокатора без этих знаний. Начни читать хотя бы Седжвика, он гораздо легче дается, и код предполагается на С++. Без алгоритмической базы ничего хорошего реализовать у тебя, к сожалению, не получится.
6
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||
| 23.12.2016, 17:05 [ТС] | ||||
|
И реализация будет проще, можно тупо создать массив нужного типа с заведомо большим размером. А дальше насколько я понимаю что бы добраться до нужного индекса потребуется время на "указатель на начало массива + индекс" - это вроде константная сложность Но все же мне лично материал легче дается из обсуждений нежели из чтения простыни текста Но все же стараюсь читать книги... Хотя в последнее время мало. Читал как то Страуструпа... надолго запомнилДобавлено через 10 секунд Спасибо! Добавлено через 5 минут
0
|
||||
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 23.12.2016, 18:36 | |
Сообщение было отмечено Undisputed как решение
Решение
2
|
|
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 23.12.2016, 18:46 | ||
|
Конечно, стоит рассматривать эту схему лишь как приближенную шпаргалку.
Например - хранить строки лучше в map, нежели unordered_map т.к. для хеш-функции понадобится пройтись по всей строке, в то время, как бинарное дерево может определить место элемента, не проходя до конца, используя лексикографическое сравнение. Чтобы лучше понять контейнеры - нужно прочитать теорию и подкрепить это хорошей практикой. Идеально было бы попытаться реализовать их, хотя бы на примитивном уровне, но с соблюдением требований O-нотации на добавление/поиск/удаление. Добавлено через 2 минуты Советую потом ещё Майерса, Эффективное использование STL.
1
|
||
| 23.12.2016, 19:26 | |
|
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 24.12.2016, 00:11 [ТС] | ||
|
MrGluck,
Отличная картинка! Большое спасибо! А то держать этот кошмар в голове это... Mr.X, Никто ни на кого не влияет. Тут просто обсуждения. Вопросы, ответы и советы. Зачем такое писать? Вам жалко что ли когда мне помогают? От вас же ничего не уходит Добавлено через 10 минут Форум на то и форум Книге и статье вопросы не задашь и ничего с ними не обсудишь
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 24.12.2016, 10:25 | ||
Ну, это таки юмор был, и исключительно по поводу правописания слова "чтобы". Хотелось бы, чтобы в процессе этой помощи вы становились грамотнее, а тут как-то наоборот получилось!
0
|
||
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 29.12.2016, 00:51 | |
|
4
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 30.12.2016, 20:40 [ТС] | |
|
MrGluck,
Супер! Спасибо!
0
|
|
| 30.12.2016, 20:40 | |
|
Ошибка: Out of range при использовании <vector> Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 19.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|