2012-12-08 4 views
0

가능한 중복 :
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

코드가 미친 것입니다. 나는 그것이 다음과 기능적으로 동일하다고 생각한다. (모든 인쇄물을 뺀 것)

#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; 
}