Форум программистов, компьютерный форум, киберфорум
Наши страницы

Метод remove_if STL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Атрибуты прав при создании директории http://www.cyberforum.ru/cpp-beginners/thread641213.html
Пишу mkdir("dir0777",0777); mkdir("dir0770",0770); mkdir("dir0707",0707); mkdir("dir0077",0077); Для владельца - права устанавливаются правильно. Для группы и "остальных" - для всех директорий...
C++ Бинарные деревья Имею три файла: Скажите пожалуйста почему я не могу создать э-т m?(Класс tree) Он мне пишет - undefined reference to `tree::~tree()' undefined reference to... http://www.cyberforum.ru/cpp-beginners/thread641208.html
Организация цикла С++ C++
Добрый день. Нужно организовать ниже приведенный код таким образом чтобы программа никогда не выводила более 10 чисел в одной строке, и организовать это при помощи инструкции while или for, и без...
Нужна подсказка в отладке C++
Здравствуйте! Не знаю как правильно сравнить вводимое число типа double (number_1) с символом '|' (29-30 строчка). Если ввести в формате |m после первого правильно введённого числа, то программа...
C++ Функция поиска подстроки в строке http://www.cyberforum.ru/cpp-beginners/thread641136.html
int CChar::strpos(char* sub, char* str) { char* temp = new char; int t=0; for(int i=0; i<strlen(str); i++) { while(str==sub) temp = str;
C++ Генератор чисел числа до 100 помещаются в контейнер, перемешиваются и по нажатии <1>+Enter выводит на экран "генерирование число", после чего программа закрывается....что нужно добавить, что бы она не закрывалась и... подробнее

Показать сообщение отдельно
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
23.08.2012, 14:24
тут потерялась одна скобка
C++
1
listchannel.erase (std::remove_if(listchannel.begin(), listchannel.end(), Functor(cable_tv)), listchannel.end());
remove_if "переносит" все подходящие под условие элементы в конец контейнера, не удаляя их, а возвращает итератор на первый такой элемент. соответственно начиная с позиции, на которую ссылается итератор и до конца находятся тех элементы, которые нужно удалить. Соответственно мы вызываем erase, чтобы действительно удалить эти элементы.

т.е. предположим есть контейнер со следующими данными

C++
1
v = { 0, 1, 3, 6, 3, 2, 11, 3, 5, 6}
после вызова remove_if для удаления всех элементов 3 контейнер будет таким

C++
1
2
3
4
v = {0, 1, 6, 2, 11, 5, 6, 3, 3, 3}
                           ^
                           |
                     remove_if вернет итератор на этот элемент
Соответственно, нам нужно вызвать erase начиная с этого итератора и заканчивая концом вектора.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.