Đặc ngữ Erase-remove
Đặc ngữ erase-remove là một kỹ thuật C++ phổ biến để loại bỏ hiệu quả các phần tử khỏi bộ lưu trữ, đặc biệt là từ bộ lưu trữ chuỗi tiêu chuẩn như std::vector, std::list và std::deque. Nó tận dụng các thuật toán thư viện tiêu chuẩn std::remove (hoặc std::remove_if) và hàm thành viên erase().
Đặc ngữ bao gồm hai bước:
- std::remove (hoặc std::remove_if) di chuyển các phần tử cần xóa về cuối bộ lưu trữ và trả về một trình vòng lặp trỏ đến phần tử đầu tiên cần xóa.
- container.erase() xóa các phần tử khỏi bộ lưu trữ bằng cách sử dụng trình vòng lặp thu được ở bước trước. Đây là một ví dụ:
#include <algorithm>
#include <vector>
#include <iostream>
int main() {
std::vector<int> numbers = {1, 3, 2, 4, 3, 5, 3};
// Xóa tất cả các lần xuất hiện của 3 khỏi vecto.
numbers.erase(std::remove(numbers.begin(), numbers.end(), 3), numbers.end());
for (int number : numbers) {
std::cout << number << " ";
}
return 0;
}
Đầu ra:
1 2 4 5
Trong ví dụ này, chúng tôi đã sử dụng thuật toán std::remove để xóa tất cả các lần xuất hiện của số 3 khỏi std::vector