Итак, в моем файле cpp я пытаюсь объявить карту следующим образом:
map<string, vector<myStruct>> myMap;
Вверху моего файла я написал using namespace std
и у меня также есть #include <string>
,
Однако я получаю эти странные ошибки:
ошибка: ISO C ++ запрещает объявление карты без типа
Я не знаю, как это исправить. Если я напишу #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;
Обратите внимание, отсутствие оператора использования;)
#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);
}