Nhìn vào STL hiệu quả của Scott Meyers. Thật tốt khi giải thích cách sử dụng STL.
Nếu bạn muốn lưu trữ một số lượng đối tượng xác định / không xác định và bạn sẽ không bao giờ xóa bất kỳ, thì một vectơ là những gì bạn muốn. Đây là sự thay thế mặc định cho mảng C và nó hoạt động như một mảng, nhưng không tràn. Bạn có thể đặt kích thước của nó trước cũng như với dự trữ ().
Nếu bạn muốn lưu trữ một số lượng đối tượng không xác định, nhưng bạn sẽ thêm chúng và xóa chúng, thì có lẽ bạn muốn có một danh sách ... bởi vì bạn có thể xóa một phần tử mà không di chuyển bất kỳ phần tử nào sau đây - không giống như vectơ. Tuy nhiên, nó chiếm nhiều bộ nhớ hơn một vectơ và bạn không thể truy cập tuần tự một phần tử.
Nếu bạn muốn lấy một loạt các phần tử và chỉ tìm các giá trị duy nhất của các phần tử đó, đọc tất cả chúng thành một bộ sẽ làm điều đó và nó cũng sẽ sắp xếp chúng cho bạn.
Nếu bạn có nhiều cặp khóa-giá trị và bạn muốn sắp xếp chúng theo khóa, thì bản đồ sẽ hữu ích ... nhưng nó sẽ chỉ giữ một giá trị cho mỗi khóa. Nếu bạn cần nhiều hơn một giá trị cho mỗi khóa, bạn có thể có một vectơ / danh sách làm giá trị của mình trong bản đồ hoặc sử dụng nhiều chế độ.
Nó không có trong STL, nhưng đó là trong bản cập nhật TR1 cho STL: nếu bạn có nhiều cặp giá trị khóa mà bạn sẽ tìm kiếm theo khóa và bạn không quan tâm đến thứ tự của chúng, bạn có thể muốn sử dụng hàm băm - đó là tr1 :: unordered_map. Tôi đã sử dụng nó với Visual C ++ 7.1, nơi nó được gọi là stdext :: hash_map. Nó có tra cứu O (1) thay vì tra cứu O (log n) cho bản đồ.