C++ 如何使用返回类型映射创建函数<>;?

C++ 如何使用返回类型映射创建函数<>;?,c++,function,map,return,C++,Function,Map,Return,这个问题相当直截了当。我有一个映射,我希望通过调用如下函数来初始化: map-myMap myMap=initMap(&myMap) map initMap(map*theMap) { /*做些事情*/ 然而,编译器却在呻吟。解决这个问题的办法是什么 编辑1: 很抱歉,我搞砸了。代码是用*theMap正确编写的,但是当我发布问题时,我没有注意到我遗漏了*。因此,为了回答评论,我收到的错误消息是: 1>罗马数字.cpp(21):错误C2143:语法错误:在“之前缺少“;”,为什么不使用void

这个问题相当直截了当。我有一个映射,我希望通过调用如下函数来初始化:

map-myMap

myMap=initMap(&myMap)

map initMap(map*theMap)
{
/*做些事情*/
然而,编译器却在呻吟。解决这个问题的办法是什么

编辑1:

很抱歉,我搞砸了。代码是用
*theMap
正确编写的,但是当我发布问题时,我没有注意到我遗漏了
*
。因此,为了回答评论,我收到的错误消息是:


1>罗马数字.cpp(21):错误C2143:语法错误:在“之前缺少“;”,为什么不使用void initMap(map&theMap),而不是制作如此多的映射副本?

它可能会抱怨,因为您正在传递映射的地址,但您的函数会按值接受映射

您可能想要更像这样的东西:

void initMap(map<string, int>& theMap)
{
    /* do stuff...*/
}
void initMap(map&theMap)
{
/*做些事情*/
}

您应该接受指针,或者最好是地图的引用。为了方便起见,您还可以返回引用:

map<string, int>& initMap( map<string, int>& theMap )
...
// Call initMap
map<string, int> my_map;
initMap(my_map);
map和initMap(map和theMap)
...
//调用initMap
绘制我的地图;
initMap(我的地图);
执行以下操作之一:

map<string, int> myMap;
initMap( myMap );

void initMap( map<string, int>& theMap )
{
    /* do stuff in theMap */
}
map-myMap;
initMap(myMap);
void initMap(映射和主题映射)
{
/*在地图上做一些事情*/
}
或者:

map<string, int> myMap;
myMap = initMap(  );

map<string, int> initMap()
{
    map<string, int> theMap;
    /* do stuff in theMap */
    return theMap;
}
map-myMap;
myMap=initMap();
map initMap()
{
地图主题图;
/*在地图上做一些事情*/
返回地图;
}
i、 e.让函数初始化你给它的映射,或者取函数给你的映射。这两种操作你都在做(也没有
return
语句!)


我选择第一个选项。

&myMap
是指向映射对象的指针,而参数
theMap
是映射对象

两种解决方案:

myMap=initMap(&myMap);
更改为
myMap=initMap(myMap);


map initMap(map theMap)
更改为
map initMap(map*theMap)

标准解决方案就是

std::map<std::string, int> initMap();
// ...
std::map<std::string, int> myMap = initMap();
std::map initMap();
// ...
std::map myMap=initMap();
为什么要使用输入参数作为返回值?性能?现代编译器并不关心。事实上,不构建空映射会稍微快一点。

void initMap(map&map)
 void initMap(map<String,int> &Map)
 {
   //Do something
 }
{ //做点什么 }
比赛有点晚,但: 我会从错误消息中猜到你错过了

#include <map>
#包括

在代码的顶部。因此编译器不知道map应该是一个模板,因此它会被后面的尖括号弄糊涂。

编译器告诉您的错误消息是什么?谢谢您的回答,但我实际上重写了错误的代码。它包含map*theMap,我只是将指针留在了我在这里写的代码>你能扩展这个答案,添加一个解释吗?你正在将map的引用传递给init函数。返回值也不是OP所要求的对应于
map
。请不要发表胡言乱语。
#include <map>