2016-09-28 76 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; 
}