Форум программистов, компьютерный форум CyberForum.ru

Интересная особенность в работе вектора - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти количество нулей в конце записи факториала числа http://www.cyberforum.ru/cpp-beginners/thread1576518.html
Найти количество нулей в конце записи факториала числа n. Подскажет, кто алгоритм? Или хотя бы в какую сторону копать? Если приведете пример кода, буду безмерно благодарен!
C++ Быстрый перебор восьмизначных чисел на С++ Доброго всем вечера, можете подсказать как с этим разобраться? Неободимо перебрать все числа от 1 до 12345678 и проверить что в каждом из них встречается по 1 разу каждая цифра http://www.cyberforum.ru/cpp-beginners/thread1576511.html
C++ Namespace и static-функция
1. Может ли определение static-функции быть вне-класса? Выдает ошибку, просит перенести в тело 2.Как в файле класса cpp, куда я скидываю определение функий, определить пространство имен или что то типо того, чтоб каждый раз не писать class1:: ?
C++ Заполнить базу даных
Привет ребята, нужно заполнить базу данных информацыею про товар. Хочу через стринг. Мне получаеться нужно брать динамечиский масив и стринг?
C++ Разработать алгоритм определения координат опор линий С++ http://www.cyberforum.ru/cpp-beginners/thread1576470.html
задание! Разработать алгоритм определения координат опор линий!
C++ Dev C++ не компилирует Написал простейший "Hello World" в dev c++, нажимаю "Скомпилировать" (Ctrl+F9) вылетает окошко буквально на пару секунд, потом нажимаю "Отладка", пишет типа: "Проект не откомпилирован" что за ерунда? http://www.cyberforum.ru/attachment.php?attachmentid=599112&stc=1&d=1447099095 подробнее

Показать сообщение отдельно
pproger
162 / 65 / 13
Регистрация: 22.03.2011
Сообщений: 188
10.11.2015, 01:44     Интересная особенность в работе вектора
Mesteriis, дальше, продолжая процесс обучения. как ты понимаешь, при каждом удалении (изменения размера вектора) может происходить перевыделение памяти. дабы оптимизировать этот момент используется т.н называемая erase-remove идиома. смысл в том, что сначала мы перемещаем все удаленные элементы в конец массива и получаем новый итератор на следующий_за_последним. потом одним вывозов erase удаляем эти элементы (и возможно в этот единственный момент память перераспределится). так то.

касательно твоего кода. я бы использовал стандартный алгоритм remove_if, проверяя в лямбде, что элемент нужно удалить. в этой же лямбде сохранял куда требуется удаленный элемент (или что ты там пытался изобразить). потом бы вызвал erase.

Добавлено через 2 минуты
Цитата Сообщение от Mesteriis Посмотреть сообщение
Я гляжу тебя прям прет от знаний
дык всегда приятно ткнуть ближнего в его же дерьмо. не знал?
 
Текущее время: 04:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru