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

Пара вопросов по итераторам - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Многомдульные преложения http://www.cyberforum.ru/cpp-beginners/thread291591.html
Есть такое задание: Любое задание из лабораторных работ оформить в виде многомодульного приложения с использованием заголовочных файлов. Ребята, подскажите, что и как тут делать надо, последняя лабораторная осталась в семе... Весь нет перерыл, ничего не нашел(
C++ нужен дебаггер для QT Creator кто знает, киньте мне пожалуйста это важно http://www.cyberforum.ru/cpp-beginners/thread291570.html
Почему программы не видят кодировку cp866? C++
Началось с того, что я попал на ирц чат к разрабам CodeLite с просьбой разобраться с русскими буквами в консоли. Там сказали, что программы использую только те кодировки, которые есть в системе. Тогда я сравнил списки кодировок в CodeLite и Code::Blocks, они оказались совершенно одинаковые. Стал копать WinXP. Сначала проверил файл C:\WINDOWS\system32\c_866.nls, есть такой, и куча других. Потом...
Написать программу, которая... C++
Здравствуйте Ув форумчане. Мне нужно написать ряд программ, сам я уже нифига не помню, честно пытался делать. А для тех кто это все знает и помнит, думаю будет пустяком. Я учусь на заочке, а скоро экзамены, мне надо материал сдать. Помогите пожалуйста Работа№1 1. Написать программу, которая выводит на экран ваши имя и фамилию. 2. Написать программу, которая выводит на экран путь к файлу...
C++ Максимальное множество вершин графа http://www.cyberforum.ru/cpp-beginners/thread291542.html
Алгоритм Брона-Кербоша на СИ. Нахождение максимального независимого множества вершин графа, через таблицу смежности. Не могу додуматься как образовать рекурсию.
C++ создать функцию на основе кода (разбиение строки на отрезки) Здравствуйте уважаемые программисты. Мне нужна Ваша помощь. Есть небольшой код программы, суть которой в следующем. На входе есть строка. Программа "разбивает" строку на отрезки по разделителю (в моем случае это запятая). Каждый отрезок помещается в отдельный индекс массива. В результате я получаю готовый массив и могу свободно использовать его. Листинг программы: #include <iostream>... подробнее

Показать сообщение отдельно
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
09.05.2011, 13:23     Пара вопросов по итераторам
Цитата Сообщение от diagon Посмотреть сообщение
1. Почему в этом коде элементы удаляются через одного?
потому что при каждом erase все итераторы вектора, находящиеся дальше удаленного элемента сдвигаются, а сам erase возвращает правильный итератор на следующий элемент, которой стоит после удаленного. Вы этих сдвигов не учитываете, следовательно, при каждом удалении у вас итератор сдвигается на одну позицию дальше.
Будет правильнее сделать так :
C++
1
2
for (std::vector <int>::iterator j = vector.begin(); j < vector.end(); )
     j = vector.erase(j);
А вообще всегда думайте над тем, чтобы заменять поэлементные операции их интервальными аналогами. Да и, в конце концов, если требуется очистить вектор полностью, то почему бы не сделать вызов vector.clear() ?
Цитата Сообщение от diagon Посмотреть сообщение
2.Как с помощью итераторов удалить нули с конца(но если весь массив состоит из нулей, то 1 оставить)?
Пробовал по разному, последний вариант:
не работает код потому что у вас в условии дизъюнкция стоит,когда должна стоять конъюнкция условий. В вашем варианте он будет молотить цикл во-первых, до конца, пока не удалит все элементы( если массив полностью из нулей состоит ), потому что первая часть условия будет оставаться истинной, а потом и вовсе будет исключение о выходе за границы массива.
 
Текущее время: 12:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru