无法在boost / unordered_map中使用向量

时间:2014-03-03 13:46:10

标签: c++ boost

我正在使用unordered_map,我无法将指针向量声明为值。我有以下声明:

//file test.h

#include <boost/unordered_map.hpp>
#include <boost/foreach.hpp>

struct Record
{
    char **data;
};

typedef boost::unordered_map<std::string, std::vector<Record*> > MAP;
typedef std::pair<std::string,std::vector<Record*> > PAIR;

我在test.cpp中包含了这个头文件,当我使用g ++编译时,我收到以下错误:

/usr/include/boost/detail/container_fwd.hpp:80: error: provided for ‘template<class T,   class Allocator> struct std::vector’
test.h:10: error: template argument 2 is invalid
test.h:10: error: template argument 5 is invalid
test.h:10: error: invalid type in declaration before ‘;’ token

知道这个错误意味着什么吗?

1 个答案:

答案 0 :(得分:3)

您遗漏了vectorstring所需的std::vectorstd::string标题。

对于utility,您也应该包含std::pair。这可能包含在boost/unordered_map.hpp中,但您不应该依赖它。

#include <vector>
#include <string>
#include <utility>