我可以声明这样的地图
map<string, vector<string>> mymap;
我认为它适用。
然而,它没有显示。
我试过
map<string, vector<string>*> mymap;
然后就可以了
这是什么规则?
答案 0 :(得分:17)
你需要一个额外的空间:
map<string, vector<string> > mymap;
^ see the extra space
如果没有额外的空格,>>
将被解析为右移位运算符。
规则已在C ++ 0x中修改,无需额外空间。一些编译器(例如,Visual C ++ 2008及更高版本)已经不需要额外的空间。
答案 1 :(得分:9)
你可以像詹姆斯提到的那样。愚蠢的c ++解析:)
然而,map<string, vector<string> >
实际上是一个
multimap<string, string>
。 multimap将键映射到多个值。根据您的使用情况,它可能更方便或更有效。