所以在我的 cpp 文件中,我试图声明一个映射如下:
map<string, vector<myStruct>> myMap;
在我的文件顶部,我写了using namespace std
,我也有#include <string>
.
但是我收到了这些奇怪的错误:
错误:ISO C++ 禁止声明没有类型的“地图”
我不知道如何解决它。如果我写#include <map>
这只会导致编译器吓坏了。
所以在我的 cpp 文件中,我试图声明一个映射如下:
map<string, vector<myStruct>> myMap;
在我的文件顶部,我写了using namespace std
,我也有#include <string>
.
但是我收到了这些奇怪的错误:
错误:ISO C++ 禁止声明没有类型的“地图”
我不知道如何解决它。如果我写#include <map>
这只会导致编译器吓坏了。
你有#include <map>
吗?rest 看起来有效,但是如果您的 C++ 标准不是 C++11,您可能需要添加一个空格:
#include <map>
#include <vector>
#include <string>
using namespace std;
map<string, vector<myStruct> > myMap;
^^^
最好不要使用命名空间标准:
#include <map>
#include <vector>
#include <string>
std::map<std::string, std::vector<myStruct> > myMap;
注意,缺少 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);
}
此外,using namespace std
被认为是一种不好的做法。您应该有一个using
声明或使用名称的前缀std::
来表示完全限定的标识符:
#include <map>
#include <string>
#include <vector>
std::map<std::string, std::vector<myStruct>> myMap;
您需要包含map
头文件。
#include <map>
同时,如果您不使用 C++11,则需要一个空格:
map<string, vector<myStruct> > myMap;
//^^