Nó được phân bổ O (1), không phải O (1).
Giả sử kích thước dành riêng cho danh sách là 8 phần tử và kích thước tăng gấp đôi khi không gian hết. Bạn muốn đẩy 50 phần tử.
8 yếu tố đầu tiên đẩy vào O (1). Các nineth gây ra tái phân bổ và 8 bản sao, tiếp theo là một O (1) đẩy. Tiếp theo 7 đẩy trong O (1). Thứ mười bảy gây ra tái phân bổ và 16 bản sao, tiếp theo là một O (1) đẩy. 15 lần đẩy tiếp theo trong O (1). Trình kích hoạt lại ba mươi ba và 32 bản sao, tiếp theo là một cú đẩy O (1). Tiếp theo 17 đẩy trong O (1).
Vì vậy, tất cả các cú đẩy có độ phức tạp O (1), chúng tôi có 56 bản sao tại O (1) và 3 đường dẫn tại O (n), với n = 8, 16 và 32. Lưu ý rằng đây là chuỗi hình học và asymptotically bằng O (n) với n = kích thước cuối cùng của danh sách. Điều đó có nghĩa là toàn bộ hoạt động của việc đẩy các đối tượng n vào danh sách là O (n). Nếu chúng tôi khấu hao cho mỗi phần tử, đó là O (n)/n = O (1).
http://cs.stackexchange.com/questions/9380/why-is-push-back-in-c-vectors-constant-amortized – rlbond