Trong bài viết này, chúng ta sẽ thảo luận về cách hoạt động, cú pháp và các ví dụ của hàm stack::emplace() trong C++ STL.
Stack trong C++ STL là gì?
Stack (ngăn xếp) là cấu trúc dữ liệu lưu trữ dữ liệu theo nguyên tắc LIFO (Last In First Out - Vào sau ra trước), nơi việc chèn và xóa phần tử đều diễn ra tại đỉnh của ngăn xếp. Giống như một chồng đĩa: nếu muốn thêm đĩa mới, ta đặt lên trên cùng; nếu muốn lấy đĩa ra, ta cũng lấy từ trên cùng.
Hàm stack::emplace() là gì?
stack::emplace() là hàm built-in trong C++ STL, được định nghĩa trong header <stack>. Hàm này dùng để xây dựng và chèn một phần tử mới vào container stack liên kết.
Khi gọi hàm này, một phần tử mới được chèn vào đỉnh stack và trở thành phần tử đỉnh mới. Hàm này nội bộ gọi emplace_back để chèn phần tử mới tại đỉnh.
Cú pháp
stack_name.emplace(Args& args);
Tham số
- args – Các đối số dùng để xây dựng phần tử cần chèn.
Giá trị trả về
Hàm này không trả về giá trị nào.
Ví dụ minh họa
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> stck;
stck.emplace(10);
stck.emplace(20);
stck.emplace(30);
stck.emplace(40);
stck.emplace(50);
stck.emplace(60);
cout << "Các phần tử trong stack: ";
while (!stck.empty()) {
cout << stck.top() << " ";
stck.pop();
}
return 0;
}
Kết quả
Các phần tử trong stack: 60 50 40 30 20 10
Ví dụ bổ sung: Đếm số phần tử
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> stck;
int total = 0;
stck.emplace(10);
stck.emplace(20);
stck.emplace(30);
stck.emplace(40);
stck.emplace(50);
stck.emplace(60);
cout << "Các phần tử trong stack: ";
while (!stck.empty()) {
cout << stck.top() << " ";
stck.pop();
total++;
}
cout << "\nTổng số phần tử trong stack: " << total;
return 0;
}
Kết quả
Các phần tử trong stack: 60 50 40 30 20 10
Tổng số phần tử trong stack: 6