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

gam*_*ist 2 c++ iterator stl

我有一个容器类(称为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);
Run Code Online (Sandbox Code Playgroud)

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

GMa*_*ckG 8

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

class Atom {
public:
  template <typename ForwardIterator>
  Atom(std::string str, 
    ForwardIterator start, 
    ForwardIterator end);
Run Code Online (Sandbox Code Playgroud)

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