此帖子底部的解决方案 我有这段代码:
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;
}
答案 0 :(得分:0)
VectorToMap需要是类型:map mMainOptions,而不是void类型。 它需要一个return语句来返回它创建的地图。
你需要一个前向声明,或者在代码中移动showMou上面的vectorToMap。
答案 1 :(得分:0)
map
是模板而不是有效类型。您不能将map
视为map<int, string>
的一般版本。只有具有参数列表的那个可以像类型一样使用。所以:
map<int, string> vectorToMap(const vector<string> myVector);
应该没事。
希望这会有所帮助。