Cắt deque trong C++ | Laptrinhcanban.com

Cắt deque trong C++

Hướng dẫn cách cắt deque trong C++. Bạn sẽ học được cách sử dụng 2 hàm cơ bản là hàm front() và hàm back() để cắt deque trong C++ sau bài học này.

Chúng ta có 3 phương pháp cơ bản để cắt deque trong C++ như sau:

  • Hàm front(): Cắt phần tử đầu tiên từ deque
  • Hàm data(): Cắt phần tử cuối cùng từ deque
  • Cắt một phạm vi từ deque

Cắt phần tử đầu tiên từ deque trong C++ bằng hàm front

Hàm front là một hàm thành viên trong class std:deque, có tác dụng tham chiếu đến phần tử đầu tiên trong deque.

Bằng cách ứng dụng hàm front(), chúng ta không những có thể cắt ra giá trị của phần tử đầu tiên trong deque, mà còn có thể thay đổi giá trị của phần tử đầu tiên đó.

Chúng ta sử dụng hàm front trong C++ với cú pháp sau đây:

dq.front();

Trong đó dq là deque cần cắt ra phần tử ban đầu. Hàm front() sẽ trả về tham chiếu tới phần tử đầu tiên của deque, qua đó chúng ta có thể cắt lấy giá trị của phần tử đầu tiên này, hoặc là gán một phần tử khác để thay đổi nó.

Lưu ý chúng ta không dùng hàm front() cho deque trống nhé.

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);

//Tạo tham chiếu tới vị trí phần tử đầu tiên của deque
int front_element = dq.front();
cout << front_element << endl;

//Thay đổi phần tử đầu tiên
dq.front() = 2;
dump(dq);

return 0;
}

Kết quả:

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

Cắt phần tử cuối cùng từ deque trong C++ bằng hàm back

Hàm back là một hàm thành viên trong class std:deque, có tác dụng tham chiếu đến phần tử cuối cùng trong deque.

Bằng cách ứng dụng hàm back(), chúng ta không những có thể cắt ra giá trị của phần tử cuối cùng trong deque, mà còn có thể thay đổi giá trị của phần tử cuối cùng đó.

Chúng ta sử dụng hàm back trong C++ với cú pháp sau đây:

dq.back();

Trong đó dq là deque cần cắt ra phần tử ban đầu. Hàm back() sẽ trả về tham chiếu tới phần tử cuối cùng của deque, qua đó chúng ta có thể cắt lấy giá trị của phần tử cuối cùng này, hoặc là gán một phần tử khác để thay đổi nó.

Lưu ý chúng ta không dùng hàm back() cho deque trống nhé.

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);

//Tạo tham chiếu tới vị trí phần tử cuối cùng của deque
int back_element = dq.back();
cout << back_element << endl;

//Thay đổi phần tử cuối cùng
dq.back() = 2;
dump(dq);

return 0;
}

Kết quả:

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

Cắt một phạm vi từ deque

Để cắt một phạm vi từ deque ban đầu, chúng ta sử dụng vòng lặp hoặc trình lặp để truy cập tuần tự vào các phần tử trong deque để lấy các giá trị trong phạm vi cần cắt. Sau đó, chúng ta lưu các giá trị này vào deque kết quả là xong.

Và để thêm phần tử vào deque, chúng ta sẽ cần dùng đến hàm push_back() trong C++ mà Kiyoshi đã hướng dẫn trong bà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, 7, 9};
dump(dq);

//Khai báo deque chứa kết quả
deque<int> dq2;

//Khai báo phạm vi cắt
int start = 2, end = 4;

//Truy cập vào phạm vi để lấy và lưu các phần tử vào deque kết quả
for (short i = start; i<= end;i++){
dq2.push_back(dq[i]);
}

dump(dq2);

return 0;
}

Kết quả:

3 1 4 1 5 7 9
4 1 5

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách cắt deque trong 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.