Tôi muốn triển khai bản đồ, ánh xạ một chuỗi thành một vectơ chung.Bản đồ STL tới vector chung C++
Tôi muốn làm điều này:
std::map<std::string, std::vector<class T> > myMap;
Giả sử myMap đề xuất đã sau đây nhét vào đó, nó có thể được sử dụng như ví dụ:
vector<int> intVec = myMap["ListOfInts"]; // Works because "ListOfInts" maps to a vector<int>
vector<string> stringVec = myMap["ListOfStrings"]; // Works because "ListOfInts" maps to a vector<string>
Khi tôi tuyên bố bản đồ với ở trên cú pháp trình biên dịch có một cơn đau tim.
Có ai có thể đưa ra bất kỳ đề xuất nào không? Hoặc một tùy chọn mảng liên kết tốt hơn trong C++ (đề xuất không tăng trước khi tăng).
Bạn sẽ cần giá trị bản đồ của bạn trở thành một loại biến thể, không có loại biến thể tiêu chuẩn do đó bạn sẽ phải thực hiện của riêng bạn hoặc sử dụng một cái gì đó như ['boost :: variant'] (http://www.boost.org/doc/libs/1_59_0/doc/html/variant.html). – mattnewport
Có bao nhiêu 'T' khác nhau bạn cần cho std :: vector? Bạn có thể lấy ra với một container đa hình nếu bạn có thể tìm ra những gì để đúc thông qua RTTI hoặc thông qua một số loại ID bạn thực hiện chính mình. –
VoidStar
C++ được nhập tĩnh và các loại giá trị bản đồ phải giống nhau trong một bản đồ. Nếu bạn nói với chúng tôi vấn đề thực sự bạn đang cố gắng giải quyết, chúng tôi có thể chỉ ra một cách C++ - thành ngữ, hoặc nhìn vào 'boost :: variant'. –