首页 > 解决方案 > 容器和容器内容类型 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,例如。

因此,单个函数将适用于不同类型的容器以及它们各自容器的不同数据类型。

标签: c++templatescontainers

解决方案


您需要制作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) ...
}

如果您不需要显式命名元素类型TContainer::value_type无论如何,您仍然可以得到这种类型。


推荐阅读