Xem xét hiệu ứng tích cực của bộ nhớ đệm và vị trí dữ liệu khi tìm kiếm trong bộ nhớ chính, tôi có xu hướng sử dụng std::vector<>
với std::pair<>
như các mục có giá trị khóa và thực hiện tìm kiếm tuyến tính cho cả hai, nếu tôi biết tổng số mục có giá trị không bao giờ là "quá lớn" để ảnh hưởng nghiêm trọng đến hiệu suất. Gần đây tôi đã có rất nhiều tình huống mà tôi biết trước rằng tôi sẽ có số lượng lớn các mục có giá trị khóa và do đó đã chọn số std::map<>
ngay từ đầu.Khi nào nên chọn std :: vector over std :: map cho dữ liệu khóa-giá trị?
Tôi muốn biết cách bạn đưa ra quyết định cho vùng chứa thích hợp trong các tình huống như các trường hợp được mô tả ở trên.
Bạn
- luôn luôn sử dụng
std::vector<>
(hoặc tương tự)? - luôn sử dụng
std::map<>
(hoặc tương tự)? - có cảm giác đường ruột cho vị trí trong phạm vi số mục thích hợp hơn đối tượng khác?
- điều gì đó hoàn toàn khác?
Cảm ơn!
@Nemanja: Bởi vì tôi thường làm việc trong môi trường Windows CE/Mobile bị tê liệt nghiêm trọng, nơi TR1 sẽ mất quá nhiều thời gian, để nói ít nhất, để tích hợp. –