std::deque::push_front
#include <deque>
void push_front(const value_type& value);
void push_front(value_type&& value);
Thêm một phần tử mới vào đầu deque.
Tham số
value
- Giá trị của phần tử cần thêm vào đầu 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_front()
luôn thêm phần tử mới vào đầu deque.push_front()
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.
- Khi chèn phần tử mới vào đầu deque, các phần tử đã tồn tại trong deque sẽ được dời về phía sau, nhưng thứ tự tương đối giữa chúng vẫn được giữ nguyên.
- Độ phức tạp: Độ phức tạp của
push_front()
làO(1)
- thời gian hằng số. Đây là một trong những ưu điểm chính của std::deque so với std::vector (độ phức tạp chèn vào đầu của std::vector làO(n)
).
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_front(10);
myDeque.push_front(20);
myDeque.push_front(30);
std::cout << "myDeque:";
for (int x : myDeque) {
std::cout << ' ' << x;
}
std::cout << '\n'; // Output: myDeque: 30 20 10
return 0;
}
Di chuyển
#include <iostream>
#include <deque>
#include <string>
int main() {
std::deque<std::string> myDeque;
std::string str = "Hello";
myDeque.push_front(str); // Sao chép str vào deque
myDeque.push_front(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_front("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: World Hello
std::cout << "str after move: " << str << '\n'; // Output: str after move:
return 0;
}
Các hàm liên quan
push_back | Thêm một phần tử mới vào cuối deque |
pop_front | Xóa phần tử đầu tiên 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 |