2016-09-28 74 views
-1

由於我正在獲取分段錯誤,此代碼中出現了什麼問題 看起來按值返回映射並不成問題。C++ - 通過引用模板化函數傳遞STL映射

#include<bits/stdc++.h> 
using namespace std; 

template<typename T> 
T myMapIntersect(T& left, T& right) 
{ } 

int main() 
{ 
    map<string, int> m; 
    m["aa"] = 1; 
    m["bb"] = 1; 
    m["vf"] = 1; 
    m["hh"] = 1; 

    myMapIntersect< map<string,int> >(m, m); 
    return 0; 
} 
+0

OT回:你可能不應該'bits'包括直接的東西。 –

+0

@AmiTavory爲什麼? –

+5

um,'myMapIntersect'中的返回值在哪裏? – vu1p3n0x

回答

2

你需要在你的功能

#include<bits/stdc++.h> 
using namespace std; 

template<typename T> 
T myMapIntersect(T& left, T& right) 
{ 
    return left; 
} 

int main() 
{ 
    map<string, int> m; 
    m["aa"] = 1; 
    m["bb"] = 1; 
    m["vf"] = 1; 
    m["hh"] = 1; 

    myMapIntersect< map<string,int> >(m, m); 
    return 0; 
}