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

Chương trình C ++ để xóa các mục khỏi một vectơ nhất định

Giả sử chúng ta có một tập hợp các phần tử hiện diện bên trong một vectơ. Chúng ta sẽ phải thực hiện một số thao tác loại bỏ bằng cách sử dụng hàm xóa () của loại lớp vectơ để loại bỏ bằng cách sử dụng các chỉ số và cuối cùng hiển thị phần còn lại của phần tử. Chức năng xóa không lấy chỉ mục trực tiếp. Chúng ta sẽ phải chuyển địa chỉ của nó bằng cách truyền v.begin () + index, ở đây v là vectơ và v.begin () là địa chỉ của phần tử đầu tiên (phần tử thứ 0). Bây giờ, bằng cách thêm chỉ mục với nó, nó sẽ di chuyển đến phần tử có mặt ở chỉ mục nhất định.

Vì vậy, nếu đầu vào giống như v =[5,8,6,3,2,0,1,4] bị xóa khỏi các chỉ số 2, 6 và 5, thì đầu ra sẽ là [5,8,3,2,0 ] bởi vì mảng ban đầu là [5,8,6,3,2,0,1,4], bây giờ sau khi xóa phần tử khỏi chỉ mục 2, nó là [5,8,3,2,0,1,4], bây giờ phần tử ở chỉ số 6 là 4, vì vậy sau khi loại bỏ nó, mảng sẽ là [5,8,6,3,2,0,1] và bây giờ mục ở chỉ số 5 là 1, vì vậy sau khi loại bỏ nó, thì mảng sẽ là [5,8,3,2,0].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • xóa phần tử ở chỉ mục 2 bằng v.erase (v.begin () + 2)

  • xóa phần tử ở chỉ mục 6 bằng v.erase (v.begin () + 6)

  • xóa phần tử ở chỉ mục 5 bằng v.erase (v.begin () + 5)

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
   vector<int> v = {5,8,6,3,2,0,1,4};
   v.erase(v.begin()+2);
   v.erase(v.begin()+6);
   v.erase(v.begin()+5);
   for(int i = 0; i<v.size(); i++){
       cout << v[i] << " ";
   }
}

Đầu vào

{5,8,6,3,2,0,1,4}

Đầu ra

5 8 3 2 0