所以在我的cpp文件中,我试图按如下方式声明地图:
map<string, vector<myStruct>> myMap;
在我的文件顶部,我写了using namespace std
,我也有#include <string>
。
但是我遇到了这些奇怪的错误:
错误:ISO C ++禁止声明没有类型的“map”
我不知道如何修复它。如果我写#include <map>
只会导致编译器吓坏。
答案 0 :(得分:4)
#include <map>
吗?休息看起来有效,
但是,如果您的C ++标准不是C ++ 11,则可能需要添加空格:
#include <map>
#include <vector>
#include <string>
using namespace std;
map<string, vector<myStruct> > myMap;
^^^
更好的是不使用namespace std:
#include <map>
#include <vector>
#include <string>
std::map<std::string, std::vector<myStruct> > myMap;
答案 1 :(得分:0)
您还应该加入<map>
。 std::map
是通过此标头引入的。
此外,using namespace std
is considered a bad practice。您应该使用using
语句或使用名称前缀std::
来表示完全限定的标识符:
#include <map>
#include <string>
#include <vector>
std::map<std::string, std::vector<myStruct>> myMap;
答案 2 :(得分:0)
您需要包含map
标头文件。
#include <map>
同时,如果您不使用C ++ 11,则需要一个空格:
map<string, vector<myStruct> > myMap;
//^^
答案 3 :(得分:0)
注意,缺少using语句;)
#include <vector>
#include <string>
#include <map>
#include <iostream>
typedef int myStruct;
std::map<std::string, std::vector<myStruct>> myMap;
int
main()
{
std::vector<myStruct> testMe = { 1, 2, 3};
myMap["myTest"] = testMe;
std::cout << myMap.size() << std::endl;
return(0);
}