Решение в нижней части этого сообщения у меня есть этот код:
void showMenu()
{
const vector<string> vMainOptions { "Show List",
"Enter new name" };
map<int, string> mMainOptions = vectorToMap(vMainOptions);
map<int, string>::const_iterator mIt = mMainOptions.begin();
while(mIt != mMainOptions.end())
{
cout << mIt->first << ". " << mIt->second << endl;
mIt++;
}
}
map vectorToMap(const vector<string> myVector)
{
vector<string>::const_iterator vIt = myVector.begin();
map<int, string> myMap;
while(vIt != myVector.end())
{
static int nr = 1;
myMap->insert(make_pair(nr, *vIt));
vIt++;
nr++;
}
return myMap;
}
но это дает мне следующие ошибки:
line 19: error: invalid use of template-name 'std::map' without an argument list
это строка 19:
map vectorToMap(const vector<string> myVector);
Я сделал все возможное и попробовал много способов исправить это, но все не в порядке. Он отлично работал до того, как все было в одной функции, но потом я не могу повторно использовать это, поэтому я хочу сделать для этого новую функцию! (Извините, если его короткий текст, но мне просто нужна помощь)
РЕШЕНИЕ:
void showMenu()
{
const vector<string> vMainOptions { "Show List",
"Enter new name"};
map<int, string> mMainOptions = vectorToMap(vMainOptions);
map<int, string>::const_iterator mIt = mMainOptions.begin();
while(mIt != mMainOptions.end())
{
cout << mIt->first << ". " << mIt->second << endl;
mIt++;
}
}
map<int, string> vectorToMap(const vector<string>& myVector)
{
vector<string>::const_iterator vIt = myVector.begin();
map<int, string> myMap;
while(vIt != myVector.end())
{
static int nr = 1;
myMap.insert(make_pair(nr, *vIt));
vIt++;
nr++;
}
return myMap;
}
map
- это шаблон, а не действительный тип. Вы не можете рассматривать map
как общую версию map<int, string>
. Только тот, который имеет список аргументов, может использоваться как тип. Итак: map<int, string> vectorToMap(const vector<string> myVector);
будет в порядке. Надеюсь, это поможет.
VectorToMap должен быть типа: map mMainOptions, а не типа void. Для возврата создаваемой карты требуется оператор return.
и вам нужно либо объявление вперед, либо переместить vectorToMap выше showMenu в коде.