我正在尝试使用boost unordered_multimap类,但我无法声明它。错误在代码之后。
#include <iostream>
#include <map> // header file needed for to use MAP STL
#include <boost/unordered_map.hpp>
using namespace std;
int main(void)
{
map<int, map<int, map<int,int> > > _3dstl;
_3dstl[0][0][0] = 10;
cout<<_3d[0][0][0]<<endl;
typedef boost::unordered_multimap<int, typedef boost::unordered_multimap<int, int>> unordered_map;
unordered_map _2d;
return 0;
}
这是错误:
||In function 'int main()':|
|17|error: template argument 2 is invalid|
|17|error: template argument 5 is invalid|
|17|warning: 'typedef' was ignored in this declaration|
|18|error: 'unordered_map' was not declared in this scope|
|18|error: expected ';' before 'location3d'|
||=== Build finished: 4 errors, 1 warnings ===|
答案 0 :(得分:2)
更改此行:
typedef boost::unordered_multimap<int, typedef boost::unordered_multimap<int, int>> unordered_map;
对此:
typedef boost::unordered_multimap<int, boost::unordered_multimap<int, int> > unordered_map;
第二个typedef不是必需的,也是语法错误。同样在C ++ 2003中,您必须注意模板声明中的>>
。
此外,请使用其他名称,然后使用unordered_map
作为typedef,因为如果您使用std::unordered_map
(这是一种不良做法),这将与using namespace std;
发生冲突。建议是intmap2d
或其他。