如何声明boost unordered_multimap

时间:2011-07-21 18:11:53

标签: c++ boost

我正在尝试使用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 ===|

1 个答案:

答案 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或其他。