0

可能重复:
在 C++ 中通过引用/值传递

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

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

如果我在另一个函数中需要 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;
 }
4

1 回答 1

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;
}
于 2012-12-08T22:13:30.950 回答