Идиомы и техники
Что такое идиома remove-erase?
Идиома remove-erase в C++ используется для удаления элементов из контейнера, таких как std::vector или std::list, с использованием алгоритмов STL. Она сочетает алгоритм std::remove и метод erase контейнера.
Пример:
#include <vector>
#include <algorithm>
#include <iostream>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 3, 6};
// Удаление всех элементов со значением 3
vec.erase(std::remove(vec.begin(), vec.end(), 3), vec.end());
// Вывод оставшихся элементов
for (int n : vec) {
std::cout << n << " ";
}
return 0;
}
Шаги:
-
std::remove: Перемещает элементы, которые не нужно удалять, в начало контейнера, возвращая итератор на новую “концовку”. -
erase: Удаляет элементы в указанном диапазоне, определённом итератором “концовки”.
Эта идиома эффективно удаляет элементы, сохраняя при этом производительность и упрощая код.