Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2015, 16:40   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Алгоритм remove_if

Добрый день !
Пытаюсь удалить из контейнера все четных значения. В итоге после применения этого алгоритма получаю какую-то левую последовательность.
При этом размер контейнера не изменился.

была последовательность

100 101 102 103 104 105 106 107 108 109

а стала

101 103 105 107 109 105 106 107 108 109

во второй последовательности есть четных значения )))

Код:
 struct A
{
	bool operator()(const int &i)
	{
		
		return (i%2)==0;
	}
};

int main()
{
	vector<int> v,v2(11);
	for (int i=0;i<10;i++) v.push_back(i+100);
	vector<int> :: iterator p,k;
	for (p = v.begin();p!=v.end();p++) cout<<*p<<" "; cout<<endl; 
	k = remove_if(v.begin(),v.end(),A());
	cout<<endl; 
	for (p = v.begin();p!=v.end();p++) cout<<*p<<" "; cout<<endl; 
	
	return 0;
}
http://ideone.com/6TxYIL
RAFA91 вне форума Ответить с цитированием
Старый 27.11.2015, 17:17   #2
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

все разобрался. надо применить
Код:
v.erase(k,v.end());
RAFA91 вне форума Ответить с цитированием
Старый 27.11.2015, 17:19   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

может использовать полученное значение k

ну, типа такого:
Код:
	for (p = v.begin();p!=k;p++) cout<<*p<<" "; cout<<endl;
Цитата:
Сообщение от RAFA91 Посмотреть сообщение
все разобрался. надо применить
Код:
v.erase(k,v.end());
ага. ну, или удалить лишнее.. Если цель получить изменённый массив..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.11.2015, 17:23   #4
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
м

ага. ну, или удалить лишнее.. Если цель получить изменённый массив..

подумал что сам алгоритм может все ненужное очистить.
RAFA91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм Эндрью (Улучшенный алгоритм Грэхема) tszavyalova Помощь студентам 0 20.01.2014 21:49
Разветвляющийся алгоритм,циклический алгоритм и Многомерные массивы (Pascal) TrapperPTZ Помощь студентам 1 26.01.2012 08:58
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм. iamhated Помощь студентам 1 15.01.2012 16:24
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм iamhated Помощь студентам 1 14.01.2012 16:22
Алгоритм TMDS (Алгоритм передачи данных интерфейса DVI) Pro4RE Помощь студентам 2 24.04.2011 21:55