我有一个名为 x 的地图变量,其定义为:
std::map <std::string, std::string, std::less<std::string>,
MyAlloc<std::pair <std::string, std::string> > >
x (std::less<std::string> (), MyAlloc <std::pair <std::string, std::string> > ());
其中 MyAlloc 是我定义的自定义 STL 分配器。当我尝试将一对插入地图时,例如:
x.insert(std::pair<std::string,std::string>("key","value"));
我收到以下错误:
error: request for member ‘insert’ in ‘x’, which is of non-class type
‘std::map<std::basic_string<char>, std::basic_string<char>,
std::less<std::basic_string<char> >, MyAlloc<std::pair<std::basic_string<char>,
std::basic_string<char> > > >(std::less<std::basic_string<char> > (*)(),
MyAlloc<std::pair<std::basic_string<char>, std::basic_string<char> > > (*)())’
如果我使用分配器的默认构造函数,我不会收到此错误,例如:
std::map <std::string, std::string, std::less<std::string>,MyAlloc <std::pair <std::string, std::string> > > x;
我不确定使用默认构造函数的初始化是否正确..?
提前致谢 .. :)