Chuyển tới nội dung chính

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ếu value là một rvalue, 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

  1. push_front() luôn thêm phần tử mới vào đầu deque.
  2. push_front() làm tăng kích thước của deque lên 1.
  3. 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.
  4. 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.
  5. Độ phức tạp: Độ phức tạp của push_front()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::vectorO(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_backThêm một phần tử mới vào cuối deque
pop_frontXóa phần tử đầu tiên của deque
insertChèn một hoặc nhiều phần tử mới vào một vị trí cụ thể trong deque