c++ - 容器和容器内容类型 C++ 的模板
问题描述
我本质上想要
template <typename Container, typename T>
void copy(Container<T> &A, const Container<T> &B)
{
(copy contents from B to A) ...
}
但是,afaik,它不能这样做。使用方面,它会从 (example) 复制内容vector<int> A, B
,但也适用于list<float> A, B
,例如。
因此,单个函数将适用于不同类型的容器以及它们各自容器的不同数据类型。
解决方案
您需要制作Container
一个模板模板参数:
template <template<typename...> typename Container, typename T>
Container<T> copy(Container<T> A, Container<T> B)
{
// (copy contents from B to A) ...
}
或者,您可以简单地编写:
template <typename Container>
Container copy(Container A, Container B)
{
// (copy contents from B to A) ...
}
如果您不需要显式命名元素类型T
。Container::value_type
无论如何,您仍然可以得到这种类型。
推荐阅读
- firebase - Cloud Firestore Firebase Collection ref 上的 IN 查询是否有 Flutter/Dart 等效项?
- excel - 循环以跨多个工作表向表中插入行
- java - 休眠错误访问字段,映射问题
- python - 如何通过 ATOMIC_REQUESTS 在多个数据库上使用 Django 的测试客户端?
- angular - 在侧边栏的路由角度中使用 URL 参数
- paypal - 在 PayPal 捐赠按钮上添加地址要求
- php - 如何从该类中重新实例化该类对每个函数调用的依赖关系?
- javascript - 检查域上是否存在网页,否则加载另一个页面
- python-3.x - 如何将情节图例条目放在两行(图例文本中的 \n )?
- javascript - 全名的正则表达式,包括特殊字符(Javascript)