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

Утечка памяти или что? Валидность итератора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск по заштрихованной части матрицы http://www.cyberforum.ru/cpp-beginners/thread1162367.html
Такая вот задача: есть матрица 5х5 (заполняется случайным образом), в ней некоторые елементы заштрихованы. Найти минимальный элемент в заштрихованной части матрицы и заменить им все элементы из незаштрихованной части. Матрица выглядит так (слэш - заштрихованный элемент): | ----- | | ----/ | | -///- | | ////- | | ----- |
C++ Найти числа которые делятся на 6, делятся на 2, и на 3 Даны числа от 1 го до 20 ти. из них надо найти числа коорые делятся на 6, делятся на 2, и на 3. Как решить помогите контрольная работа у нас кто-нибудь пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread1162311.html
C++ Понимание препроцессора в языке программирования
Здравствуйте, вот думаю над этими вопросами, а препод говорит обьяснить более подробно, чтобы даже ребенок понял(что за фанатизм?). Обьясните, пожалуйста, кто знает что к чему: 1) Все нужные вам константы, определенные Вами с помощью директив препроцессора #define, хранятся в файле konst.h. Какая строка обязательна в Вашей С-программе, чтобы эти константы стали ей доступны? Является ли эта...
C++ Как в данной программе сделать так чтобы все генерируемые числа стояли по возрастанию или по убыванию
как в данной программе сделать ток что бы все генерируемые числа стояли по возрастанию или по убыванию нужен свежий взгляд #include <iostream> using namespace std; //-------------------------------------------------//
C++ Декодер кода Хемминга http://www.cyberforum.ru/cpp-beginners/thread1162259.html
Здравствуйте! Сразу к делу: программа рабочая декодирует и находит ошибки в коде, только раскодирует в двоичном представлении, а мне нужно (код Хемминга->{1,0}->ASCII) не особо силен в с++., поэтому помогите сделать вывод из символов?/ Вот код: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<iostream> #include <clocale> using namespace std;
C++ Печать alt-кодов в .txt файл Как напечатать символы alt-кодов в .txt файл через С++? подробнее

Показать сообщение отдельно
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
30.04.2014, 11:08     Утечка памяти или что? Валидность итератора
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Не могли бы вы уточняюще перефразировать?
В принципе выше уже ответили, но на всякий случай. Erase уадляет элемент. В случае последовательного контейнера это приводит к смещению всех следующих за ним элементов к началу. Как следствие, если у нас были итераторы, хранящие позицию конкретных элементов, то при таком сдвиге все позиции становятся невалидными, и могут даже указывать за пределы контейнера.

Другая ситуация с std::list. В нем удаление элемента по сути означает перебрасывание пары указателей, т.е. незатронутые удалением элементы не меняют своего положения и итераторы, указывающие на них, можно использовать.

Цитата Сообщение от dzrkot Посмотреть сообщение
вышел из положения)
Закостылял.
Есть же нормальные решения - http://en.cppreference.com/w/cpp/algorithm/remove в связке с erase.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru