Xóa phần tử trong deque C++ | Laptrinhcanban.com

Xóa phần tử trong deque C++

Hướng dẫn cách xóa deque trong C++. Bạn sẽ học được cách sử dụng các hàm như hàm pop_front(), pop_back cũng như hàm deque erase C++ để xóa phần tử trong deque sau bài học này.

Chúng ta có 3 phương pháp để xóa deque trong C++ như sau:

  • Hàm pop_front : Xóa phần tử đầu tiên trong deque
  • Hàm pop_back : Xóa phần tử cuối cùng trong deque
  • deque erase C++: Xóa phần tử tại vị trí chỉ định
  • Hàm erase(first, last): Xóa các phần tử trong phạm vi chỉ định

Xóa phần tử đầu tiên trong deque C++ bằng pop_front

Hàm pop_front là một hàm thành viên trong class std:deque, có tác dụng xóa phần tử đầu tiên trong deque cũng như giảm độ dài của nó đi một đơn vị.

Cú pháp sử dụng hàm pop_front để xóa phần tử đầu tiên trong deque như sau:

dq.pop_front();

Trong đó dq là tên deque cần xóa phần tử đầu tiên.

Ví dụ cụ thể:

#include <iostream>
#include <deque>
using namespace std;

//Tạo hàm xuất deque
void dump(deque<int>& dq)
{
for (auto x: dq) {
cout << " "<< x ;
}
cout << endl;
}

int main ()
{
deque<int> dq{3, 1, 4, 1, 5};
cout << "Before erase" << endl;
dump (dq);

dq.pop_front();
cout << "After erase" << endl;
dump (dq);
return 0;
}

Kết quả:

Before erase
3 1 4 1 5
After erase
1 4 1 5

Có thể thấy phần tử đầu tiên trong deque là phần tử 3 đã bị xóa khỏi deque ban đầu.

Hàm pop_front thuộc kiểu void, do đó nó sẽ không trả giá trị. Bởi vậy nó sẽ xóa phần tử đầu tiên trong deque chứ không trả về phần tử đó. Trong trường hợp muốn lấy phần tử đầu tiên trong deque, hãy sử dụng tới hàm front để thay thế.

Ví dụ:

deque<int> dq{3, 1, 4, 1, 5};
int last = dq.front(); //3

dq.pop_front(); //{1, 4, 1, 5}

Xóa phần tử cuối cùng trong deque C++ bằng pop_back

Hàm pop_back là một hàm thành viên trong class std:deque, có tác dụng xóa phần tử cuối cùng trong deque cũng như giảm độ dài của nó đi một đơn vị.

Cú pháp sử dụng hàm pop_back để xóa phần tử cuối cùng trong deque như sau:

dq.pop_back();

Trong đó dq là tên deque cần xóa phần tử cuối cùng.

Ví dụ cụ thể:

#include <iostream>
#include <deque>
using namespace std;

//Tạo hàm xuất deque
void dump(deque<int>& dq)
{
for (auto x: dq) {
cout << " "<< x ;
}
cout << endl;
}

int main ()
{
deque<int> dq{3, 1, 4, 1, 5};
cout << "Before erase" << endl;
dump (dq);

dq.pop_back();
cout << "After erase" << endl;
dump (dq);
return 0;
}

Kết quả:

Before erase
3 1 4 1 5
After erase
3 1 4 1

Có thể thấy phần tử cuối cùng trong deque là phần tử 5 đã bị xóa khỏi deque ban đầu.

Hàm pop_back thuộc kiểu void, do đó nó sẽ không trả giá trị. Bởi vậy nó sẽ xóa phần tử cuối cùng trong deque chứ không trả về phần tử đó. Trong trường hợp muốn lấy phần tử cuối cùng trong deque, hãy sử dụng tới hàm back để thay thế.

Ví dụ:

deque<int> dq{3, 1, 4, 1, 5};
int last = dq.back(); //5

dq.pop_back(); //{3, 1, 4, 1}

Xóa 1 phần tử trong deque bằng erase c++

deque erase c++
là một hàm thành viên trong class std:deque, có tác dụng xóa một hoặc nhiều phần tử trong deque C++ cũng như làm giảm độ dài tương ứng của nó.

Để xóa 1 phần tử tại vị trí chỉ định bằng hàm erase trong deque c++ chúng ta sử dụng cú pháp sau đây:

dq.erase(itr);

Trong đó dq là deque ban đầu, và itr là trình lặp trỏ đến vị trí cần xóa trong deque.

Ở đây trình lặp (iterator) là một vòng lặp có tác dụng giống như con trỏ, giúp truy cập đến các phần tử ở vị trí cụ thể trong deque.

Trong trường hợp cần chỉ đến vị trí index thứ n trong deque, chúng ta sẽ viết trình lặp p như sau:

dq.begin() + i

Trong đó dq.begin() chỉ đến vị trí đầu tiên trong deque, và i là index của vị trí phần tử cần chỉ đến.

Kết hợp lại thì công thức để xóa 1 phần tử tại vị trí chỉ định trong deque C++ bằng hàm erase sẽ như sau:

dq.erase(dq.begin() + i);

Ví dụ cụ thể:

#include <iostream>
#include <deque>
using namespace std;

//Tạo hàm xuất deque
void dump(deque<int>& dq)
{
for (auto x: dq) {
cout << " "<< x ;
}
cout << endl;
}

int main ()
{
deque<int> dq{3, 1, 4, 1, 5};
dq.erase(dq.begin() + 1);//Xóa phần tử ở vị trí thứ 1
dump(dq);

dq.erase(dq.begin() + 3);//Xóa phần tử ở vị trí thứ 3
dump(dq);
return 0;
}

Kết quả:

3 4 1 5
3 4 1

Xóa các phần tử trong một phạm vi chỉ định bằng deque erase c++

Chúng ta sử dụng deque erase c++ để xóa các phần tử trong một phạm vi chỉ định của một deque với cú pháp sau đây:

dq.erase( iterator_first, iterator_last);

Trong đó dq là deque ban đầu, iterator_firstiterator_last là các trình lặp trỏ đến phạm vi bắt đầu và kết thúc xóa.

Tương tự như khi xóa 1 phần tử thì cú pháp sử dụng thực tế để xóa các phần tử trong một phạm vi chỉ định trong deque C++ bằng hàm erase sẽ là:

dq.erase(dq.begin() + start, dq.begin() + end);

Trong đó startend là vị trí index của phạm vi xóa trong deque.

Ví dụ cụ thể:

#include <iostream>
#include <deque>
using namespace std;

//Tạo hàm xuất deque
void dump(deque<int>& dq)
{
for (auto x: dq) {
cout << " "<< x ;
}
cout << endl;
}

int main ()
{
deque<int> dq{3, 1, 4, 1, 5, 7, 9};

dump(dq);

//Xóa phần tử trong phạm vi index từ 1 đến 3
dq.erase(dq.begin() + 1, dq.begin() + 3);
dump(dq);

//Xóa phần tử trong phạm vi index từ 2 đến 5
dq.erase(dq.begin() + 2, dq.begin() +5);
dump(dq);

return 0;
}

Kết quả:

3 1 4 1 5 7 9
3 1 5 7 9
3 1

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách xóa phần tử trong deque C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.