C++ - 通过引用模板函数传递 STL 映射
Posted
技术标签:
【中文标题】C++ - 通过引用模板函数传递 STL 映射【英文标题】:C++ - Passing STL map by reference to a templated function 【发布时间】:2016-09-28 06:34:20 【问题描述】:这段代码出了什么问题,因为我遇到了分段错误 按值返回 map 似乎没有问题。
#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;
【问题讨论】:
OT:您可能不应该直接包含来自bits
的内容。
@AmiTavory 为什么?
嗯,myMapIntersect
的回报在哪里?
因为它是不能保证保持固定的事物的约定。假设在下一个版本中,该文件将是bits/std_cpp.hpp
。外部目录文件会相应地修改,它们是你应该直接使用的。
见Why should I not #include <bits/stdc++.h>?
【参考方案1】:
你需要在你的函数中返回
#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;
【讨论】:
以上是关于C++ - 通过引用模板函数传递 STL 映射的主要内容,如果未能解决你的问题,请参考以下文章