Hàm erase() 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