Computer >> Máy Tính >  >> Lập trình >> C ++

hàm xóa danh sách () trong C ++ STL

Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của hàm list ::delete () trong C ++.

Danh sách trong STL là gì?

Danh sách là một cấu trúc dữ liệu cho phép chèn và xóa theo thời gian liên tục ở bất kỳ đâu theo trình tự. Danh sách được triển khai dưới dạng danh sách được liên kết kép. Danh sách cho phép phân bổ bộ nhớ không liền kề. Danh sách thực hiện trích xuất chèn và di chuyển phần tử ở bất kỳ vị trí nào trong vùng chứa tốt hơn so với mảng, vectơ và deque. Trong Danh sách, truy cập trực tiếp vào phần tử chậm và danh sách tương tự như forward_list, nhưng các đối tượng danh sách chuyển tiếp là danh sách được liên kết đơn và chúng chỉ có thể được lặp lại về phía trước.

list ::delete () là gì?

list ::delete () là một hàm có sẵn trong C ++ STL được khai báo trong tệp tiêu đề. xóa () được sử dụng để xóa các phần tử khỏi vùng chứa danh sách. Chúng tôi có thể xóa một phần tử đơn lẻ hoặc nhiều phần tử khỏi vùng chứa danh sách. Nó làm giảm kích thước của vùng chứa danh sách theo số lượng phần tử được xóa / xóa

Cú pháp

list_container.erase(positon);
list_container.erase(start_position, end_position);

Hàm này có thể chấp nhận một hoặc hai tham số -

Tham số

  • vị trí - Đây là một vị trí duy nhất mà chúng tôi muốn xóa một phần tử.

  • start_position, end_position - Điều này xác định phạm vi mà chúng tôi muốn loại bỏ các yếu tố.

Giá trị trả lại

Hàm này trả về một trình lặp đang trỏ tới phần tử cuối cùng bị loại bỏ.

Ví dụ

Trong đoạn mã dưới đây, chúng ta phải xóa các phần tử bằng cách sử dụng hàm delete () có trong STLand để tìm nạp phần tử đầu tiên bằng cách sử dụng một trình vòng lặp sẽ trỏ đến phần tử đầu tiên bằng cách sử dụng hàm begin () và sau đó, chúng tôi sẽ xóa trình vòng lặp chứa phần tử đầu tiên của danh sách.

#include <bits/stdc++.h>
using namespace std;
int main(){
   //Create a list
   list<int> myList;
   myList.push_back(2);
   myList.push_back(4);
   myList.push_back(6);
   myList.push_back(8);
   myList.push_back(10);
   cout<<"List before deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i<< " ";
   }
   //iterator that will point to the first element
   list<int>::iterator i = myList.begin();
   myList.erase(i);
   //list after deleting the element
   cout << "\nList after deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i << " ";
   }
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau

List before deleting elements: 2 4 6 8 10
List after deleting elements: 4 6 8 10

Ví dụ

Trong đoạn mã dưới đây, chúng ta phải xóa các phần tử bằng cách sử dụng hàm xóa () có trong STLand vì chúng ta sẽ tìm nạp phần tử đầu tiên bằng cách sử dụng một trình vòng lặp (trình lặp 1) sẽ trỏ đến phần tử đầu tiên bằng cách sử dụng hàm begin () và chúng ta sẽ lấy một phần tử khác trình lặp (trình lặp 2) để trỏ đến phần tử thứ hai và sau đó chúng tôi sẽ xóa trình lặp khỏi phạm vi giữa trình lặp 1 và trình lặp 2 và hiển thị kết quả.

#include <bits/stdc++.h>
using namespace std;
int main(){
   //Create a list
   list<int> myList;
   myList.push_back(2);
   myList.push_back(4);
   myList.push_back(6);
   myList.push_back(8);
   myList.push_back(10);
   cout<<"List before deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i << " ";
   }
   //iterator that will point to the first element
   list<int>::iterator i_1, i_2;
   i_1 = myList.begin();
   i_2 = myList.begin();
   //advance() function will increment the position of iterator 2 by 3
   advance(i_2, 4);
   //now it will delete the elements from the range 0 - 4
   myList.erase(i_1, i_2);
   //list after deleting the element
   cout<< "\nList after deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i << " ";
   }
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau

List before deleting elements: 2 4 6 8 10
List after deleting elements: 10