我可以声明一个类似这样的映射吗?
map<string, vector<string>> mymap;
我认为它适用。
然而,事实证明并非如此。
我尝试过
map<string, vector<string>*> mymap;
然后就可以了。
这是什么规则?
你需要一个额外的空格:
map<string, vector<string> > mymap;
^ see the extra space
没有额外的空格,>>
会被解析为右移操作符。
C++0x中修改了规则,使得额外的空格变得不必要。一些编译器(例如Visual C++ 2008及以上版本)已经不需要额外的空格了。
map<string, vector<string> >
实际上是一个 multimap<string, string>
。一个multimap把一个键映射到多个值。它可能更加方便或者更有效,具体取决于你的使用情况。
std::map<std::string, std::vector<std::string> >
,但我意识到我在这里已经失败了。 - sbistd::
?也许他写了自己的命名空间。或者他使用了using namespace std;
甚至是using std::string;
和using std::map;
;) 出于好奇,为什么要用“十字军东征”来表示资格认证呢? - Stephen>>
的人不会编写与std lib相匹配的自己的C++容器。(如果他们这样做了,上帝保佑我们。)至于using namespace std
,请参见此答案。 - sbi