Ошибка параметра / аргумента карты (решение найдено)

0

Решение в нижней части этого сообщения у меня есть этот код:

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;
}
  • 0
    Вы назначаете карту для функции типа void (vectorToMap). mMainOptions не может быть назначен типу void. И vectorToMap ничего не возвращает. Вы также используете mMainOptions внутри функции vectorToMap до того, как она будет полностью объявлена.
  • 0
    Я предлагаю вам сказать: map <int, string> mMainOptions; А затем вызовите vectorToMap (vMainOptions, mMainOptions);
Показать ещё 3 комментария
Теги:
function
vector
map

2 ответа

0
Лучший ответ

map - это шаблон, а не действительный тип. Вы не можете рассматривать map как общую версию map<int, string>. Только тот, который имеет список аргументов, может использоваться как тип. Итак: map<int, string> vectorToMap(const vector<string> myVector); будет в порядке. Надеюсь, это поможет.

0

VectorToMap должен быть типа: map mMainOptions, а не типа void. Для возврата создаваемой карты требуется оператор return.

и вам нужно либо объявление вперед, либо переместить vectorToMap выше showMenu в коде.

  • 0
    У меня есть предварительное заявление. Я пытался сделать это типа карты раньше, но потом это дало еще больше ошибок ... но кто-нибудь может сказать, как мне создать функцию карты, которая работает?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню