Loading Now

Hàm erase() vector c++

vector c++

Bài tập

Cho trước vector v và hai số nguyên l, r. Bạn hãy viết hàm xóa đi các phần tử có chỉ số từ l tới r trong vector v và trả về vector kết quả tương ứng.

Ví dụ:

  • Với v = [1, 2, 3, 4, 5, 6, 7], l = 1, r = 3 thì 
    removeElements(v) = [1, 5, 6, 7]
    .
  • Với v = [2, 5, 8, 9, 6], l = 3, r = 3 thì removeElements(v) = [2, 5, 8, 6].

Lý thuyết

Để xóa các phần tử trong vector bạn có thể dùng hàm erase(first, last). Trong đó first và last là 2 iterator. Ví dụ:

Để xóa 2 phần tử đầu tiên trong vector bạn có thể làm như sau:

v.erase(v.begin(), v.begin() + 2);

Để xóa tất cả các phần tử có chỉ số từ l tới r bạn làm như sau:

v.erase(l, r + 1);

Để xóa 3 phần tử cuối cùng trong vector bạn có thể làm như sau:

v.erase(v.end() - 3, v.end());

Ví dụ tổng quan về hàm erase():

#include <iostream>
#include <vector>

using namespace std;


int main() {
    vector<int> v;
    for (int i = 1; i <= 10; i++) {
        v.push_back(i); 
    }
    
    // Xóa 2 phần tử đầu
    v.erase(v.begin(), v.begin() + 2); // 3 4 5 6 7 8 9 10
    // Xóa 2 phần tử cuối
    v.erase(v.end() - 2, v.end()); // 3 4 5 6 7 8
    // Xóa các phần tử có chỉ số từ 2 tới 4
    // Lưu ý là v.begin() + 5 chứ không phải v.begin() + 4
    v.erase(v.begin() + 2, v.begin() + 5); // 3 4 8

    for (auto x : v) {
        cout << x << " ";
    }

    return 0;
}

Kết quả khi chạy chương trình:

3 4 8

Hướng dẫn

Code mẫu:

std::vector<int> removeElements(std::vector<int> v, int l, int r)
{
    v.erase(v.begin() + l, v.begin() + r + 1);
    return v;
}

Post Comment

Contact