我正在使用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
知道这个错误意味着什么吗?
答案 0 :(得分:3)
您遗漏了vector
和string
所需的std::vector
和std::string
标题。
对于utility
,您也应该包含std::pair
。这可能包含在boost/unordered_map.hpp
中,但您不应该依赖它。
#include <vector>
#include <string>
#include <utility>