是否有一个C++等同于Java的STL容器类的Collection接口?

doc*_*doc 3 c++ collections containers stl function-templates

我想传递任意容器作为函数的参数并迭代它(没有擦除也没有推送元素).不幸的是,似乎没有标准的方法来做到这一点.

我想到的第一个解决方案是一个接口(让我们称之为CollectionInterface),它将由包装STL容器的类实现.所以函数声明看起来像:

f(const CollectionInterface * collection);
Run Code Online (Sandbox Code Playgroud)

或者,我正在考虑方法模板,它具有在编译时保持绑定的优点:

template <class CONTAINER> void f(const CONTAINER & collection);
Run Code Online (Sandbox Code Playgroud)

你认为哪种方式更好?

Mat*_*hen 7

ForwardIterator?这是一种InputIterator(或OutputIterator),它也允许多次传递算法(递增它不会使先前值无效).

迭代器(与Java迭代器完全不同)是统一C++集合的核心线程.有关处理它们的算法(以及相关的迭代器类型要求)的示例,您可以从中开始<algorithm>.特别是,搜索提供了使用ForwardIterator的示例.它在范围[first1, last1]定义的序列范围内找到第一个匹配项[first2, last2).这些都是符合要求的对象ForwardIterator.