c++ - 具有特定类型作为泛型参数的 STL 容器

标签 c++ templates stl containers

有什么方法可以让我创建一个函数,该函数将具有特定类型的容器(比如 std::string)作为参数

void foo(const std::container<std::string> &cont)
{
   for(std::string val: cont) {
      std::cout << val << std::endl;
   }
}

并为每种类型的 STL 容器调用它作为输入?像上面一样?
std::set<std::string> strset;
std::vector<std::string> strvec;
std::list<std::string> strlist;

foo(strset);
foo(strvec);
foo(strlist);

最佳答案

您可以制作 foo一个函数模板采用 template template parameter对于容器类型。

例如

template<template<typename...> typename C>
void foo(const C<std::string> &cont)
{
   for(std::string val: cont) {
      std::cout << val << std::endl;
   }
}

LIVE

关于c++ - 具有特定类型作为泛型参数的 STL 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60297482/

相关文章:

c++ - 在 C++0X 中评估 auto 的类型

c++ - 如何解决C++中的线性搜索问题?

c++ - 如何对齐控制台输出的数字在同一位置

c++ - 类模板中的类模板

c++ - 加法和减法给出不正确的结果

c++ - 模板类的成员函数模板与模板类的成员函数的区别

c++ - 函数模板参数推导和继承

c++ - 类内不可复制

c++ - std::set 和 std::unordered_set 如何使用 emplace() 就地构造元素?

c++ - 如何最优雅地获取 std::vector 缓冲区的地址?