我无法声明地图

问题描述 投票:0回答:4

因此,在我的 cpp 文件中,我尝试声明一个地图,如下所示:

map<string, vector<myStruct>> myMap;

在我的文件顶部我写了

using namespace std
并且我也有
#include <string>

但是我遇到了这些奇怪的错误:

错误:ISO C++ 禁止声明没有类型的“map”

我不知道如何解决它。如果我写

#include <map>
只会导致编译器崩溃。

c++ dictionary iso
4个回答
4
投票

你有

#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;

0
投票

您需要包含

map
头文件。

  #include <map>

同时,如果您不使用 C++11,则需要一个空格:

 map<string, vector<myStruct> > myMap;
                           //^^

0
投票

您还应该包括

<map>
std::map
是通过这个标题引入的。

此外,

using namespace std
被认为是不好的做法。您应该有一个
using
语句或使用名称前缀
std::
来表示完全限定的标识符:

#include <map>
#include <string>
#include <vector>

std::map<std::string, std::vector<myStruct>> myMap;

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);
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.