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

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ế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_back() luôn thêm phần tử mới vào cuối deque.
  2. push_back() 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. 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.
  5. Độ phức tạp: Độ phức tạp trung bình của push_back()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_frontThêm một phần tử mới vào đầu deque
pop_backXóa phần tử cuối cùng 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