Я не могу объявить карту

Итак, в моем файле cpp я пытаюсь объявить карту следующим образом:

map<string, vector<myStruct>> myMap;

Вверху моего файла я написал using namespace std и у меня также есть #include <string>
,

Однако я получаю эти странные ошибки:

ошибка: ISO C ++ запрещает объявление карты без типа

Я не знаю, как это исправить. Если я напишу #include <map> это просто приводит к сумасшествию компилятора.

1

Решение

у тебя есть #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;
4

Другие решения

Вы должны включить 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

Обратите внимание, отсутствие оператора использования;)

#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);
}
0
По вопросам рекламы [email protected]