Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
mrDarz
1 / 1 / 0
Регистрация: 09.03.2016
Сообщений: 25
Завершенные тесты: 1
1

Объяснить работу алгоритма std::remove();

28.02.2017, 14:17. Просмотров 170. Ответов 1
Метки нет (Все метки)

Есть буквы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>     
#include <algorithm>    
#include <vector>
 
int main () {
  std::vector<int> vec = {10, 20, 30, 30, 20, 10, 10, 20};                          
  std::remove (vec .begin(), vec .end(), 20);         
  std::cout << "range contains:";
  for (auto i: vec )
    std::cout << ' ' << i;
  std::cout << '\n';
  return 0;
}
и не могу разобраться почему выводится 10 30 30 10 10 10 10 20, то есть крайнее 20 не убирается. Конечно разобрался как сделать что бы выглядело приемлемо, но почему в таком виде не убирает остальные 20 так и не понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2017, 14:17
Ответы с готовыми решениями:

Просьба объяснить работу std::thread в двух коротких примерах кода
Доброго времени суток! Я использую std::thread чтобы поднять два разных...

std::string + std::remove
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;algorithm&gt; int main() {...

Объяснить, что делает std::lock_guard ?
привет. Я правильно понял, что объект std::lock_guard, примененный к мьютексу в...

Объяснить поведение объекта std::cin в цикле while
#include&lt;iostream&gt; #include&lt;string&gt; #include&lt;cstdlib&gt; #include&lt;windows.h&gt;...

Функция remove() удаляет только заранее запланированые файлы, выдавая ошибку на remove (STRING)
Салем, начал изучать файловую работу в С++, и столкнулся с такой проблемой, что...

1
GbaLog-
Любитель чаепитий
3166 / 1472 / 465
Регистрация: 24.08.2014
Сообщений: 5,206
Записей в блоге: 1
Завершенные тесты: 2
28.02.2017, 14:29 2
std::remove ничего не удаляет, он лишь сдвигает влево те значения, которые не попали под условие.
Чтобы удалить элементы, нужно использовать vec.erase.
В вашем случае как-то так:
C++
1
vec.erase(std::remove (vec.begin(), vec.end(), 20), vec.end());
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2017, 14:29

Объяснить назначение функции length(), принимающей в качестве аргумента std::vector
Добрый день! Подскажите, пожалуйста. Есть такая переменная:...

Объяснить работу кода
Объясните что происходит в данном коде #include &quot;stdafx.h&quot; #include...

Объяснить работу кода
#include &lt;iostream&gt; using namespace std; int main() { int i, j; for...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru