我有以下功能。参数是索引(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;
}
答案 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;
}