map参数/参数bugging out(找到解决方案)

时间:2013-11-23 00:15:41

标签: c++ function vector map

此帖子底部的解决方案 我有这段代码:

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

我尽我所能并尝试了很多方法来解决这个问题,但事实并非如此。 当所有功能都在一个功能之前,它工作得很好,但后来我无法重复使用,所以我想为它创建一个新功能!(抱歉,如果它的短文,但我真的需要帮助)

SOLUTION:

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

2 个答案:

答案 0 :(得分:0)

VectorToMap需要是类型:map mMainOptions,而不是void类型。 它需要一个return语句来返回它创建的地图。

你需要一个前向声明,或者在代码中移动showMou上面的vectorToMap。

答案 1 :(得分:0)

map是模板而不是有效类型。您不能将map视为map<int, string>的一般版本。只有具有参数列表的那个可以像类型一样使用。所以: map<int, string> vectorToMap(const vector<string> myVector); 应该没事。 希望这会有所帮助。