繁体   English   中英

指向特定类型的STL-Container样式和迭代器(C ++)

[英]STL-Container styles and iterators that point to a specific type (C++)

我有一个容器类(称为Atom),我想存储Term类型的对象。许多STL容器构造函数的形式为Container(Iterator first, Iterator last) ,用一组元素初始化容器。

现在,我希望能够将此表单用于我的Atom类,但我不确定如何从容器类中解开迭代器。 例如,目前我有:

class Atom {
public:
  Atom(std::string str, 
    std::vector<Term>::const_iterator start, 
    std::vector<Term>::const_iterator end);

这只允许矢量迭代器。 我如何概括我采用的迭代器类型?

每当您需要对类型进行概括时,请考虑模板:

class Atom {
public:
  template <typename ForwardIterator>
  Atom(std::string str, 
    ForwardIterator start, 
    ForwardIterator end);

现在只需迭代范围,无论它是什么。

您可以将构造函数声明为自己的模板。 只需将startend视为迭代器,如果它们支持该接口,它们将起作用。 不要担心强制迭代器处理类型Term 如果复制构造函数可以将其转换为Term那么它将起作用。

构造函数可能如下所示:

template<typename I> Atom(std::string str, I start, I end);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM