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)
你认为哪种方式更好?
ForwardIterator?这是一种InputIterator(或OutputIterator),它也允许多次传递算法(递增它不会使先前值无效).
迭代器(与Java迭代器完全不同)是统一C++集合的核心线程.有关处理它们的算法(以及相关的迭代器类型要求)的示例,您可以从中开始<algorithm>
.特别是,搜索提供了使用ForwardIterator的示例.它在范围[first1, last1]
定义的序列范围内找到第一个匹配项[first2, last2)
.这些都是符合要求的对象ForwardIterator
.
归档时间: |
|
查看次数: |
2026 次 |
最近记录: |