std::vector<CustomClass *> whatever(20000);
hoặc là:
std::vector<CustomClass *> whatever;
whatever.reserve(20000);
Cái trước đặt kích thước thực của mảng - tức là làm cho nó trở thành một vectơ 20000 con trỏ. Cái sau để trống vector, nhưng dành không gian cho 20000 con trỏ, vì vậy bạn có thể chèn (tối đa) nhiều cái mà không cần phải phân bổ lại.
Ít nhất theo kinh nghiệm của tôi, việc một trong hai điều này tạo ra sự khác biệt lớn về hiệu suất - nhưng có thể ảnh hưởng đến tính chính xác trong một số trường hợp. Đặc biệt, miễn là không xảy ra việc tái phân bổ, các trình lặp vào vectơ được đảm bảo vẫn hợp lệ và một khi bạn đã đặt kích thước / không gian dành riêng, bạn sẽ được đảm bảo sẽ không có bất kỳ sự phân bổ nào miễn là bạn không ' t tăng kích thước hơn thế.
std::vector
tham chiếu nào , tùy theo nhu cầu của bạn phù hợp hơn với nhu cầu của bạn.