作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
multimap 如下:
int main() {
multimap<int, string> coll;
coll = { {5, "tagged"} ,
{2, "a"} ,
{1, "this"} ,
{4, "of"} ,
{6, "strings"} ,
{1, "is"} ,
{3, "multimap"}
};
}
现在,我想得到一个像下面这样的函数模板来一个一个地打印这些容器中的所有值元素,包括 multimap
但不限于这种类型的 map 和这对特定的模板参数。
void PrintAllMaps(multimap<int, string> map) {
for (auto elem : map) {
cout << elem.second << ' ';
}
cout << endl;
}
最佳答案
including multimap but not limited
如果我没理解错的话,你想要一个模板模板函数:
template <
typename T1,
typename T2,
typename T3,
typename T4,
template <typename, typename, typename, typename> class M>
void PrintAllMaps(M<T1, T2, T3, T4>& map) {
...
}
请注意,std::multimap
和其他类似 std::map
的容器实际上采用超过 2 个模板参数,其余的具有默认类型。
参见 Live Demo
关于Multimap 上的 C++ 泛型编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313920/
我是一名优秀的程序员,十分优秀!