std::deque::push_back
#include <deque>
void push_back(const value_type& value);
void push_back(value_type&& value);
Thêm một phần tử mới vào cuối deque.
Tham số
value
- Giá trị của phần tử cần thêm vào cuối deque.
- Phiên bản đầu tiên nhận tham chiếu hằng (
const value_type&
), cho phép truyền vào một đối tượng hoặc một giá trị tạm thời (rvalue
). Đối tượng sẽ được sao chép (copy) vào deque. - Phiên bản thứ hai (từ C++11) nhận tham chiếu
rvalue
(value_type&&
), cho phép di chuyển (move) đối tượng vào deque nếuvalue
là mộtrvalue
, tránh việc sao chép không cần thiết, tối ưu hiệu suất.
Giá trị trả về
Không có giá trị trả về
Đặc điểm
push_back()
luôn thêm phần tử mới vào cuối deque.push_back()
làm tăng kích thước của deque lên 1.- Phiên bản đầu tiên thực hiện sao chép phần tử được truyền vào. Phiên bản thứ hai (từ C++11) hỗ trợ di chuyển (move semantics), giúp tối ưu hiệu suất khi thêm các đối tượng lớn hoặc phức tạp vào deque.
- Nếu việc thêm phần tử mới làm vượt quá dung lượng hiện tại của deque, deque sẽ tự động cấp phát lại bộ nhớ. Quá trình này có thể tốn kém thời gian. Tuy nhiên, std::deque được thiết kế để việc cấp phát lại ít xảy ra hơn so với std::vector.
- Độ phức tạp: Độ phức tạp trung bình của
push_back()
làO(1)
- thời gian hằng số. Tuy nhiên, trong một số trường hợp (khi cần cấp phát lại bộ nhớ), độ phức tạp có thể làO(n)
, với n là số phần tử hiện tại trong deque.
Ví dụ
Thêm phần tử value vào cuối deque
#include <iostream>
#include <deque>
int main() {
std::deque<int> myDeque;
myDeque.push_back(10);
myDeque.push_back(20);
myDeque.push_back(30);
std::cout << "myDeque:";
for (int x : myDeque) {
std::cout << ' ' << x;
}
std::cout << '\n'; // Output: myDeque: 10 20 30
return 0;
}
Di chuyển
#include <iostream>
#include <deque>
#include <string>
int main() {
std::deque<std::string> myDeque;
std::string str = "Hello";
myDeque.push_back(str); // Sao chép str vào deque
myDeque.push_back(std::move(str)); // Di chuyển str vào deque (str sẽ trở thành rỗng sau lời gọi này)
myDeque.push_back("World"); // Tạo một đối tượng string tạm thời và di chuyển nó vào deque
std::cout << "myDeque:";
for (const std::string& s : myDeque) {
std::cout << ' ' << s;
}
std::cout << '\n'; // Output: myDeque: Hello World
std::cout << "str after move: " << str << '\n'; // Output: str after move:
return 0;
}
Các hàm liên quan
push_front | Thêm một phần tử mới vào đầu deque |
pop_back | Xóa phần tử cuối cùng của deque |
insert | Chèn một hoặc nhiều phần tử mới vào một vị trí cụ thể trong deque |