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