地图通过引用传递

时间:2012-12-08 21:41:15

标签: c++ map reference

  

可能重复:
  Pass by Reference / Value in C++

我有以下功能。参数是索引(ms映射)和密钥(字符串)。 它搜索密钥并返回带有结果的集或消息“找不到文件”。

如何通过引用传递地图索引?

如果我需要另一个函数中的search_sucess,最好通过指针返回吗?

 typedef map<string, set<string> > ms;

 set<string> seach_set(ms index, string key)
 {
     ms::iterator result;
     result = index.find(key);
     set<string> search_sucess;

     if (result != index.end())
     {
         cout << key << " in files : " << "{";
         for(set<string>::iterator iter = result->second.begin();
            iter != result->second.end(); ++iter)
          {
            cout << *iter << " ";
            search_sucess.insert(*iter);

        }
    cout << "}";
    }
   else
   {
     cout << key << " not found ";
   }
    cout <<  endl;

    return search_sucess;
 }

1 个答案:

答案 0 :(得分:1)

那段代码很疯狂。我相信它在功能上与以下相同(减去所有打印):

#include <map>
#include <set>
#include <string>

typedef std::map<std::string, std::set<std::string>> ms;

ms::mapped_type search_set(ms & m, ms::key_type const & k)
{
    ms::iterator it = m.find(k);

    return it == m.end() ? ms::mapped_type() : it->second;
}