Xóa phần tử trong vector C++ (pop_back, erase) | Laptrinhcanban.com

Xóa phần tử trong vector C++ (pop_back, erase)

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

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

  • Hàm pop_back : Xóa phần tử cuối cùng trong vector
  • Vector 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ử cuối cùng trong vector C++ bằng pop_back

Hàm pop_back là một hàm thành viên trong class std:vector, có tác dụng xóa phần tử cuối cùng trong vector 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 vector như sau:

v.pop_back();

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

Ví dụ cụ thể:

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

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

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

v.pop_back();
cout << "After erase" << endl;
dump (v);
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 chuỗi là phần tử d đã bị xóa khỏi chuỗi 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 vector 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 vector, hãy sử dụng tới hàm back để thay thế.

Ví dụ:

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

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

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

vector erase c++ là một hàm thành viên trong class std:vector, có tác dụng xóa một hoặc nhiều phần tử trong vector 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 vector c++ chúng ta sử dụng cú pháp sau đây:

v.erase(p);

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

Ở đâ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 vector.

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

v.begin() + i

Trong đó v.begin() chỉ đến vị trí đầu tiên trong vector, 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 vector C++ bằng hàm erase sẽ như sau:

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

Ví dụ cụ thể:

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

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

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

v.erase(v.begin() + 3);//Xóa phần tử ở vị trí thứ 3
dump(v);
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 vector erase c++

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

v.erase( iterator_first, iterator_last);

Trong đó v là chuỗi ban đầu, iterator_firstiterator_last là phạm vi cần xóa được chỉ định trong trình lặp trỏ đến vị trí cần xóa trong vector.

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 vector C++ bằng hàm erase sẽ là:

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

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

Ví dụ cụ thể:

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

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

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

dump(v);

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

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

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 vector 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.