如何使用2个以上的元素访问std :: map中的特定元素?

时间:2012-08-24 10:21:59

标签: c++ stdmap

我试图从具有两个以上元素的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的任何信息。

3 个答案:

答案 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::multimapstd::map<int,std::vector<CString> >

答案 2 :(得分:1)

我相信这就是你要找的东西

std::map <int, std::list<CString> > myMap;

然后您将访问myMap[0],然后访问返回的std::list<CString>

中的每个元素