指向特定类型的 STL 容器样式和迭代器 (C++)
Posted
技术标签:
【中文标题】指向特定类型的 STL 容器样式和迭代器 (C++)【英文标题】:STL-Container styles and iterators that point to a specific type (C++) 【发布时间】:2011-04-06 04:14:21 【问题描述】:我有一个容器类(称为 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);
这只允许向量迭代器。如何概括我采用的迭代器类型?
【问题讨论】:
【参考方案1】:当您需要概括类型时,请考虑模板:
class Atom
public:
template <typename ForwardIterator>
Atom(std::string str,
ForwardIterator start,
ForwardIterator end);
现在只需遍历范围,无论它可能是什么。
【讨论】:
【参考方案2】:您可以将构造函数声明为它自己的模板。只需将 start
和 end
视为迭代器,如果它们支持该接口,它们就可以工作。不要担心强制迭代器处理类型Term
。如果复制构造函数可以将其转换为Term
,它将起作用。
构造函数可能如下所示:
template<typename I> Atom(std::string str, I start, I end);
【讨论】:
以上是关于指向特定类型的 STL 容器样式和迭代器 (C++)的主要内容,如果未能解决你的问题,请参考以下文章