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

std::list::push_back

#include <list>

void push_back(const value_type& val); // (1)
void push_back(value_type&& val); // (2) (since C++11)

Thêm một phần tử mới vào cuối std::list.

Tham số

val

  • Giá trị của phần tử cần thêm vào cuối std::list.
    • Phiên bản (1) nhận tham chiếu hằng (const value_type&), cho phép truyền vào một đối tượng đã tồn tại. Đối tượng sẽ được sao chép (copy) vào std::list.
    • Phiên bản (2) (từ C++11) nhận tham chiếu rvalue (value_type&&), cho phép di chuyển (move) đối tượng vào std::list nếu val 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. Thêm phần tử vào cuối: push_back() luôn thêm phần tử mới vào cuối std::list.
  2. Tăng kích thước: push_back() làm tăng kích thước của std::list lên 1.
  3. Hỗ trợ copy và move: Phiên bản (1) thực hiện sao chép phần tử được truyền vào. Phiên bản (2) (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 std::list.
  4. Không làm thay đổi vị trí tương đối của các phần tử đã tồn tại: Khi chèn phần tử mới vào cuối std::list, các phần tử đã tồn tại trong std::list giữ nguyên vị trí.
  5. Độ phức tạp: Độ phức tạp của push_back()O(1) - thời gian hằng số.

Ví dụ

#include <iostream>
#include <list>
#include <string>

int main() {
std::list<std::string> mylist;

std::string str = "Hello";
mylist.push_back(str); // Sao chép str vào mylist
mylist.push_back(std::move(str)); // Di chuyển str vào mylist (str sẽ trở thành rỗng sau lời gọi này)
mylist.push_back("World"); // Tạo một đối tượng string tạm thời và di chuyển nó vào mylist

std::cout << "mylist:";
for (const std::string& s : mylist) {
std::cout << ' ' << s;
}
std::cout << '\n'; // Output: mylist: Hello World

std::cout << "str after move: " << str << '\n'; // Output: str after move: (empty string)

return 0;
}

Các hàm liên quan

push_frontThêm một phần tử mới vào đầu std::list
pop_backXóa phần tử cuối cùng của std::list
insertChèn một hoặc nhiều phần tử mới vào một vị trí cụ thể trong std::list