Функция remove
Функция remove удаляет из диапазона
все элементы, равные заданному значению.
Функция принимает три параметра: итератор
на начало диапазона, итератор на конец
диапазона и значение, которое нужно удалить.
Функция возвращает итератор на новый конец
диапазона после удаления. Важно понимать,
что remove не изменяет размер
контейнера, а лишь переставляет элементы
так, чтобы удаляемые значения оказались
в конце диапазона.
Синтаксис
remove(first, last, value)
Пример
Давайте удалим все числа 3 из вектора
и выведем элементы, оставшиеся в начале
диапазона:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5, 3, 2, 1};
auto it = remove(v.begin(), v.end(), 3);
for (auto i = v.begin(); i != it; ++i)
{
cout << *i << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 4 5 2 1
Пример
Давайте удалим все символы 'b' из строки
и выведем результат:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str = "abcde";
auto it = remove(str.begin(), str.end(), 'b');
str.erase(it, str.end());
cout << str << endl;
return 0;
}
Результат выполнения кода:
"acde"
Пример
Давайте удалим все элементы, равные "c",
из вектора строк и выведем оставшиеся элементы:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
vector<string> v = {"a", "b", "c", "d", "e"};
auto it = remove(v.begin(), v.end(), "c");
for (auto i = v.begin(); i != it; ++i)
{
cout << *i << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
"a" "b" "d" "e"