2011-11-19 27 views
10

Tôi có thể sử dụng sau cú pháp:Sử dụng Danh sách bên trong bản đồ C++

std::map<int,std::list<int>> mAllData; 

đâu chính trị (int) sẽ là ID của dữ liệu, và cho biết dữ liệu có thể có nhiều loại để lưu trữ tất cả họ chống lại nói giá trị then chốt. Tôi đang cố gắng sử dụng nó.

+0

"cho biết dữ liệu có thể có các loại mulitple" ... là 'danh sách ' chỉ là một trong những loại? Hoặc bạn có nghĩa là bạn muốn có một 'danh sách' lưu trữ các trường hợp của các loại khác ngoài' int'? – Pablo

+0

Không có dữ liệu nào có nhiều phiên bản, vì vậy tất cả các trường hợp tôi muốn lưu trữ trong danh sách với ID của nó (sẽ là giá trị khóa) Để giải thích thêm ví dụ như một trong các dữ liệu của tôi có ID "10" của mAllData thì dữ liệu ID này có thể có các cá thể ID là 10000.200000,40000 vì vậy tôi chỉ muốn tạo danh sách các cá thể này và giữ nó với ID dữ liệu của nó. – user987316

+0

Tôi không hiểu câu hỏi của bạn cũng như nhận xét của bạn. Bạn đang nói bạn muốn một ID có nhiều giá trị? Hoặc bạn muốn một ID có nhiều giá trị mà mỗi loại có các loại khác nhau? – Marlon

Trả lời

23
std::map<int,std::list<int>> my_map; 
my_map[10].push_back(10000); 
my_map[10].push_back(20000); 
my_map[10].push_back(40000); 

Trình biên dịch của bạn có thể không hỗ trợ hai dấu ngoặc nhọn nằm sát nhau, vì vậy bạn có thể cần std::map<int,std::list<int> > my_map.

Với 11 my_map C++ có thể được khởi tạo một cách hiệu quả hơn:

std::map<int,std::list<int>> my_map {{10, {10000,20000,40000}}}; 

Ngoài ra, nếu bạn chỉ muốn một cách để lưu trữ nhiều giá trị cho mỗi khoá, bạn có thể sử dụng std :: Multimap.

std::multimap<int,int> my_map; 
my_map.insert(std::make_pair(10,10000)); 
my_map.insert(std::make_pair(10,20000)); 

Và trong C++ 11 này có thể được viết:

std::multimap<int,int> my_map {{10,10000},{10,20000}}; 
+0

Tôi thích câu trả lời của bạn tốt hơn, nó hoàn chỉnh hơn –

+4

Tôi không thể tin rằng tôi không biết về 'std :: multimap' (tôi biết về nó, không bao giờ sử dụng nó)! Tôi thường sử dụng 'std :: map >'. Tuyệt vời ... bây giờ tôi cảm thấy như một người có sở thích thiếu kinh nghiệm. – Marlon

Các vấn đề liên quan