我试图从具有两个以上元素的std :: map中访问特定元素。这是一个例子:
std::map <int, CString, CString, CString> map;
//Initialise
map[0] = _T("stuff1"), _T("stuff2"), _T("stuff3");
//now if I just want to access stuff3 is it this:
CString str = map[0][2];
//or something more like this?
CString str = map[0]. ???
任何帮助都会非常感谢。
编辑:非常抱歉,第一次使用地图时,我想知道为什么我找不到有更多元素的std :: map的任何信息。
答案 0 :(得分:5)
你试过编译吗?它不应该。 您只能为每个元素创建一个只有1个键和1个值的地图。
但是值可以是复合的,所以你可以写
struct ValueType {
CString v1;
CString v2;
CString v3;
}
std::map <int, ValueType> map;
并访问map[somekey].v3;
要在此类地图中插入值,您必须编写
ValueType strings = {"1","2","3"};
map.insert(999, strings);
或者你可以创建一个帮助函数(即void addToMap(std::map <int, ValueType> &map, CSting const& v1, CString const& v2, CString const& v3)
),它将以更方便的方式填充你的地图。
答案 1 :(得分:3)
std::map <int, CString, CString, CString> map;
是非法的。
使用std::multimap
或std::map<int,std::vector<CString> >
。
答案 2 :(得分:1)
我相信这就是你要找的东西
std::map <int, std::list<CString> > myMap;
然后您将访问myMap[0]
,然后访问返回的std::list<CString>